我有一个端口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的工作,并向用户展示了一个基本的HTTPauthentication请求。
但是,如果我将浏览器直接指向xxx.xxx.xxx.xxx:3000,auth_basic将被绕过,任何人都可以访问应该限制的内容。
如何在public URL和ip:port地址上启用auth_basic?
如果您访问您的网站
你会看到auth_basic响应。
端口3000上运行的服务应重新configuration为不公开可见。 相反,它应该只接受来自nginx的连接。 这是使用代理的标准方法。
为此,服务configuration中应该有一个方法来指定监听IP地址以及端口(3000)。 更改或添加到configuration,使侦听IP地址是127.0.0.1,并重新启动服务。