Nginx 에서 사용자 서버 접근 인증 을 설정 하 는 방법 예시

3781 단어
Nginx 는 도 메 인 이름 에 사용자 인증 을 단독으로 설정 할 수 있 습 니 다. 방법 도 간단 합 니 다. 사용자 인증 사용자 이름과 비밀 번 호 를 만 든 다음 에 Nginx 에 auth 인증 설정 을 추가 하면 됩 니 다.
Nginx 는 특정한 도 메 인 이름 에 사용자 인증 을 추가 할 수 있 습 니 다. 구체 적 인 방법 은 다음 과 같 습 니 다.
1. 사용자 가 인증 한 사용자 이름과 비밀 번 호 를 생 성 합 니 다.

#wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 

알림 에 따라 입력:

   :
  :
   :

스 크 립 트 는 인증 파일 을 자동 으로 생 성 합 니 다. auth. conf 내용 은 다음 과 같 습 니 다.

/usr/local/nginx/conf/auth.conf 

2. Nginx 에 auth 인증 설정 추가
도 메 인 이름 아래 auth 디 렉 터 리 를 예 로 들 어 도 메 인 이름 의 server 세그먼트 에 다음 과 같은 코드 를 추가 합 니 다.

location ^~ /auth/ { 
location ~ .*.(php|php5)?$ { 
fastcgi_pass unix:/tmp/php-cgi.sock; 
fastcgi_index index.php; 
include fcgi.conf; 
} 
auth_basic "Authorized users only"; 
auth_basic_user_file /usr/local/nginx/conf/auth.conf 
} 

auth_basic_user_file 이 htpasswd 파일 의 경로
3. Nginx 다시 시작
방문 하 다.http://yourdomainname/auth/ 사용자 이름과 비밀 번 호 를 입력 하 는 것 을 알려 줍 니 다.
만약 에 저희 가 디 렉 터 리 에 사용자 인증 을 추가 하려 면 위의 방법 이 안 된다 면 구체 적 인 디 렉 터 리 사용자 인증 을 소개 하 겠 습 니 다.
디 렉 터 리 에 사용자 인증 (auth basic) 을 추가 합 니 다.
nginx 의 authbasic 인증 은 apache 와 호 환 되 는 암호 파일 을 사용 하기 때문에 apache 의 htpasswd 를 통 해 암호 파일 을 생 성 해 야 합 니 다.
우선 시스템 의 htpasswd 를 찾 습 니 다:

find / �Cname htpasswd 

보통 CentOS 에 apache 를 설치 합 니 다. 위 치 는 다음 과 같 습 니 다.

/usr/bin/htpasswd 

찾 지 못 하면 직접 설치 하 세 요.

yum install apache 

htpasswd 파일 주 소 를 찾 습 니 다.
htpasswd 파일 을 찾 으 면 사용 자 를 만 듭 니 다. 예 를 들 어 이 사용 자 는 xiaoquan 입 니 다.

/usr/bin/htpasswd �Cc /usr/local/ngnix/conf/authdb xiaoquan 

위의 명령 은 nginx 설정 파일 디 렉 터 리 에 사용자 가 xiaoquan 인 authdb 암호 파일 을 만 들 었 습 니 다. 물론 다른 곳 에서 도 만 들 수 있 습 니 다. 여기 서 nginx 설정 파일 을 사용 하 는 것 이 편리 합 니 다.
위의 명령 은 리 턴 을 입력 하면 비밀 번 호 를 입력 하 라 는 알림 정 보 를 얻 고 두 번 입력 하면 추가 에 성공 할 수 있 습 니 다.
이어서 nginx 의 프로필 을 수정 합 니 다. 어떤 것 에 auth 를 추가 해 야 합 니 다.basic 서버 설정 에 다음 과 같은 내용 을 추가 합 니 다:

location /admin/ { 
auth_basic "QuanLei Auth."; 
auth_basic_user_file /usr/local/ngnix/conf/authdb; 
} 


마지막 으로 nginx 에 게 최신 설정 을 사용 하 게 합 니 다:

/usr/local/ngnix/sbin/nginx -s reload 

보충 해 보 세 요. 클 러 스 터 환경 을 사용 했다 면 프 록 시 를 추가 해 야 합 니 다.Pass:

location /admin/ { 
proxy_pass http://cluster/mgmt/; 
auth_basic "QuanLei Auth."; 
auth_basic_user_file /usr/local/ngnix/conf/authdb; 
} 


PS: perl 스 크 립 트 를 사용 하여 구현 하 는 방법 (코드 는 다음 과 같 습 니 다.)

#! /usr/bin/perl -w  
#filename: add_ftp_user.pl  
use strict;  
#  
print "#example: user:passwd
"; while () { exit if ($_ =~/^
/); chomp; (my $user, my $pass) = split /:/, $_, 2; my $crypt = crypt $pass, '$1$' . gensalt(8); print "$user:$crypt
"; } sub gensalt { my $count = shift; my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z'); my $s; $s .= $salt[rand @salt] for (1 .. $count); return $s; }

스 크 립 트 에 실행 가능 한 권한 부여:

chmod o+x add_user.pl

스 크 립 트 사용 방법:

./add_user.pl
user:password

생 성 된 사용자 이름 비밀 번 호 를 / usr / local / nginx / conf / vhost / nginx 에 붙 여 넣 기passwd 파일 중

좋은 웹페이지 즐겨찾기