Nginx Basic Auth无法正常工作

时间:2015-10-13 16:08:01

标签: authentication nginx configuration

我正在尝试通过我的Nginx配置来保护默认服务器。但是,当我访问该站点时,不会显示用户名/密码对话框。 Nginx像往常一样返回内容。这是完整的配置:

worker_processes 1;

events
{
    multi_accept on;
}

http
{
    include       mime.types;
    sendfile           on;
    tcp_nopush         on;
    keepalive_timeout  30;
    tcp_nodelay        on;
    gzip  on;

    # Set path for Maxmind GeoLite database
    geoip_country /usr/share/GeoIP/GeoIP.dat;

    # Get the header set by the load balancer
    real_ip_header   X-Forwarded-For;
    set_real_ip_from 0.0.0.0/0;
    real_ip_recursive on;

    server {
        listen       80;
        server_name  sub.domain.com;

        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/htpasswd/sub.domain.com.htpasswd;

        expires -1;

        access_log /var/log/nginx/sub.domain.com.access default;
        error_log  /var/log/nginx/sub.domain.com.error debug;

        location / {
            return 200 '{hello}';
        }
    }
}

有趣的是,当我尝试使用无效的文件路径作为auth_basic_user_file的值时,configtest仍然通过。情况并非如此。

这里是Nginx和系统信息:

[root@ip nginx]# nginx -v
nginx version: nginx/1.8.0

[root@ip nginx]# uname -a
Linux 4.1.7-15.23.amzn1.x86_64 #1 SMP Mon Sep 14 23:20:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

我们正在使用yum提供的Nginx RPM。

3 个答案:

答案 0 :(得分:0)

您需要在位置块内添加auth_basic和auth_basic_user_file,而不是服务器块。

location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd/sub.domain.com.htpasswd;
return 200 '{hello}';

    }

答案 1 :(得分:0)

在将基本身份验证添加到配置后,您是否尝试重新加载/停止并启动nginx?有必要使用以下方式重新加载nginx:

sudo -i service nginx reload

----为了使新设置生效。

我还要仔细检查您所测试的URL。 (一旦我尝试在Nginx代理配置中测试Nginx基本身份验证,则访问Nginx代理后面的资源的实际URL,而不是Nginx的实际URL。)


P.S。

使用无效的文件路径作为auth_basic_user_file的值仍然不会导致configtest在2018年也失败。 这是我的Nginx版本:

nginx version: nginx/1.10.2

尽管无效的文件路径会导致基本身份验证检查失败并导致:

403 Forbidden

----提供凭据后的HTTP响应。

答案 2 :(得分:0)

在我的情况下,将指令添加到/etc/nginx/sites-available/default是有效的,而将指令添加到/etc/nginx/nginx.conf则没有效果。

当然,只有在您的nginx.conf文件中有此文件时,才会发生这种情况:

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

配置很简单(将其放置在网站特定部分的位置下,或整个网站的服务器下):

server {
        location /foo/ {
                auth_basic "This part of website is restricted";
                auth_basic_user_file /etc/apache2/.htpasswd;
        }
}