NGINX -使用Web应用程序的端口号绕过我的NGINX配置

kuuvgm7e  于 2023-03-29  发布在  Nginx
关注(0)|答案(1)|浏览(165)

我正在运行一个'Opensearch Dashboards'服务器(它是Kibana的一个免费分支)。Opensearch Dashboards在端口5601('https://myopensearchserver:5601')上运行。
我有下面的NGINX配置,允许我通过'https://myopensearchserver'访问应用程序,它会向'https://myopensearchserver:5601'传递proxy_pass。
这一切都正常工作,它还有一个额外的好处,它在浏览器中隐藏了用户的端口号,只是让它看起来更整洁:

server { 
  listen 443 ssl; 
  server_name localhost; 
  ssl_certificate mycert.pem; 
  ssl_certificate_key mycert.key; 
  ssl_client_certificate ca.pem; 

  location / { 
    proxy_pass https://myopensearchserver:5601/; 
  } 
}

问题是用户仍然可以在浏览器中访问'https://myopensearchserver:5601',它完全绕过了我的NGINX配置。这是一个问题,因为我计划在我的NGINX配置中构建更多的安全控制。
因此,我要么想阻止用户直接通过'https://myopensearchserver:5601'访问应用程序,要么以某种方式重定向它,以便它通过我的NGINX配置。
我该怎么做?

6tr1vspr

6tr1vspr1#

我不知道这是否是一个合理的解决方案。但我最终在nginx/应用程序主机上创建了两个防火墙规则,一个拒绝端口5601的传入连接,另一个允许从本地主机连接到端口5602。这已经达到了预期的结果,如果用户在浏览器中输入没有端口的应用程序url,它由本地主机上的nginx处理并转发到端口5601,并且它正常工作。但是如果用户输入包含端口的应用程序URL,则它会被防火墙阻止。

编辑-实际上最简单最好的解决方案是一开始就不打开Kibana/nginx主机上的端口5601。如果你不打开它,它将无法从外部访问,但仍然可以被nginx重定向到。

相关问题