我有一个在端口 3000 上运行的服务。我使用以下 nginx 指令成功地将 URL 指向该地址:
server {
listen 80;
server_name notes.mydomain.foo;
location / {
proxy_pass http://localhost:3000;
}
auth_basic "Get lost!";
auth_basic_user_file /etc/nginx/.htpasswd;
}
也就是说,当有人去http://notes.mydomain.foo/,nginx 成功地将请求反向代理到 xxx.xxx.xxx.xxx:3000,并向用户提供了基本的 HTTP 身份验证请求。
但是,如果我将浏览器直接指向 xxx.xxx.xxx.xxx:3000,则会绕过 auth_basic,任何人都可以访问应该限制的内容。
如何在公共 URL 和 ip:port 地址上启用 auth_basic?
答案1
如果您访问您的网站
您将看到 auth_basic 响应。
应将端口 3000 上运行的服务重新配置为不公开可见。相反,它应该只接受来自 nginx 的连接。这是使用代理的标准方法。
为此,服务配置中应该有一种方法可以指定监听 IP 地址以及端口 (3000)。更改或添加配置,使监听 IP 地址为 127.0.0.1,然后重新启动服务。