nginx auth_basic 用于具有特定端口的地址

nginx auth_basic 用于具有特定端口的地址

我有一个在端口 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

如果您访问您的网站

http://xxx.xxx.xxx.xxx:80

您将看到 auth_basic 响应。

应将端口 3000 上运行的服务重新配置为不公开可见。相反,它应该只接受来自 nginx 的连接。这是使用代理的标准方法。

为此,服务配置中应该有一种方法可以指定监听 IP 地址以及端口 (3000)。更改或添加配置,使监听 IP 地址为 127.0.0.1,然后重新启动服务。

相关内容