为什么使用 nginx 和 monit 时会出现基本身份验证循环

为什么使用 nginx 和 monit 时会出现基本身份验证循环

我试图配置 nginx 以便http://example.com/monit访问http://127.0.0.1:2812,即 monit 正在监听的 url。

通过 nginx(nginx.conf 文件)和 monit(monitrc 文件)设置了两种身份验证。

现在,访问http://example.com/monit/应该会弹出两个输入表单,但在输入第二个表单(通过 monit)后,nginx 表单又会弹出。有人能指出哪里出了问题吗?

(注意:解决这个问题很容易——关闭一个基本身份验证)

我使用 debian jessie 进行了测试。如果无法重现,请见谅


这是我的 /usr/local/nginx/conf/nginx.conf (从源代码安装)

server{
    ...
    auth_basic "restricted"
    auth_basic_user_file /home/user/.htpasswd;
    location /monit/ {
        rewrite ^/monit/(.*) /$1 break;
        proxy_pass  http://127.0.0.1:2812;
    }
}

此配置要求用户输入用户/密码来访问此服务器指令中的任何文件。如果 uri 以 /monit/ 开头,它会进入位置指令并将其传递给127.0.0.1:2812。简单。

然后在 /etc/monitrc 中,我设置了一个基本身份验证。

set httpd port 2812 and
    allow 127.0.0.1      # allow access only from localhost
    allow admin:monit    # user:password

这使得 monit 只能从本地主机访问。

相关内容