整理下nginx下为目录增加用户认证的配置:
nginx的auth_basic认证采用与apache兼容的密码文件,因此我们需要通过apache的htpasswd生成密码文件。
找到htpasswd文件地址。
找到htpasswd文件后,我们来创建一个用户,比如这个用户叫:test
1 |
/usr/bin/htpasswd –c /usr/local/ngnix/conf/authdb test |
上面的命令在nginx的配置文件目录创建了用户为test的authdb密码文件,当然你也可以创建的在其他地方,此处nginx配置文件使用比较方便。
接着修改nginx的配置文件,在某个需要加auth_basic的server配置下添加如下内容
location /admin/ {
auth_basic "Test Auth!";
auth_basic_user_file /usr/local/ngnix/conf/authdb;
}
最后让nginx使用最新的配置:
1 /usr/local/ngnix/sbin/nginx -s reload
补充一下,如果你使用了集群环境,那么还需要加Proxy_Pass:
location /admin/ {
proxy_pass
auth_basic "Test Auth!";
auth_basic_user_file /usr/local/ngnix/conf/authdb;
}
如果想限制某一个目录的话需要如下配置:
location ^~ /test/ {
auth_basic "TEST-Login!";
auth_basic_user_file /opt/nginxpwd;
}
如果 不用 ^~ /test/ 而用 /test 的话 那么将只能对目录进行验证直接访问其下的文件,将不会弹出登录验证
最后nginx.conf文件如下:
- user www www;
- worker_processes 1;
- pid /var/run/nginx.pid;
- events {
- worker_connections 200;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- server {
- listen 8080;
- server_name localhost;
- charset gb2312;
- location / {
- fancyindex on;
- fancyindex_exact_size off;
- root /data/file;
- index index.html index.htm;
- }
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root /data/nginx-dist;
- }
- location /NginxStatus {
- stub_status on;
- access_log on;
- auth_basic "NginxStatus";
- auth_basic_user_file /data/passwds;
- }
- location ^~ /test1/ {
- auth_basic "Please input your Passwords!";
- auth_basic_user_file /data/passwds;
- fancyindex on;
- fancyindex_exact_size off;
- root /data/file;
- index index.html index.htm;
- }
- location ^~ /test/ {
- auth_basic "Please input your Passwords!";
- auth_basic_user_file /data/passwds;
- fancyindex on;
- fancyindex_exact_size off;
- root /data/file;
- index index.html index.htm;
- }
- }
- }