我试图配置 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 只能从本地主机访问。