我在 nginx 反向代理后面的 Digital Ocean 服务器上运行了一些 dockerized 应用程序,确切地说是:https ://github.com/jwilder/nginx-proxy 。我对其进行了配置,以便 app1.domain.com 转到 app1,app2.domain.com 转到 app2,等等。但是,我注意到如果用户执行 public_ip:port 他们仍然可以连接到我的应用程序,即使对于通过 nginx 配置为需要通过 http 身份验证登录的一种。有没有办法配置 nginx,以便只有它们的主机名将被定向到应用程序,并且公共 ip 的任何端口都被拒绝?
取决于你如何配置 nginx。
一般来说,一种请求和另一种请求的区别在于,一次设置了 HTTP
Host
标头,另一次可能没有设置,或者包含 IP(不确定)。因此,您可以对其进行过滤。可能以下方法也可以工作(无耻地复制自How can I block requests with the wrong Host header set?):