我正在运行一个'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配置。
我该怎么做?
1条答案
按热度按时间6tr1vspr1#
我不知道这是否是一个合理的解决方案。但我最终在nginx/应用程序主机上创建了两个防火墙规则,一个拒绝端口5601的传入连接,另一个允许从本地主机连接到端口5602。这已经达到了预期的结果,如果用户在浏览器中输入没有端口的应用程序url,它由本地主机上的nginx处理并转发到端口5601,并且它正常工作。但是如果用户输入包含端口的应用程序URL,则它会被防火墙阻止。
编辑-实际上最简单最好的解决方案是一开始就不打开Kibana/nginx主机上的端口5601。如果你不打开它,它将无法从外部访问,但仍然可以被nginx重定向到。