多服务不同端口如何配置nginx代理

多服务不同端口如何配置nginx代理

我有以下结构:

公共 IP <-> 虚拟机主机 <-> 虚拟机

有两个 vm:vm1_proxy_nginx vm2_service_docker_vm(使用端口 9000-9005)

Service_VM 是一个仪表板服务器,在公开端口 9001、9002 和 9005 上工作,用于用户和虚拟机之间的身份验证、登录和数据记录通信。

现在我在 nginx 反向代理 http 和 https 中重定向到 /9001 进行登录。

然后我发现这种配置会导致问题,因为没有给出通信反馈(登录成功后,服务器重定向到 9002 仪表板服务)

https://ip.ip.ip.io:9002/?token=

有人知道如何处理这个问题而不失去安全性和 SSL 问题吗?

我知道重新实现服务不会使用这样的暴露端口,但同时我需要一个解决方案......

答案1

解决此问题的最简单方法是保留所有标准端口,并在配置中创建 2 个服务器块,每个端口一个,充当将所有流量转发到目标端口的反向代理。例如:

server {
        listen 9001 ssl http2;
        ssl_certificate         *path-to-certificate*;
        ssl_certificate_key     *patch-to-private-key;
        server_name xyz.yourdomain.com;

              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass      http://*ipofupstreamserver*:9001;
}

server {
        listen 9002 ssl http2;
        ssl_certificate         *path-to-certificate*;
        ssl_certificate_key     *patch-to-private-key;
        server_name xyz.yourdomain.com;

              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass      http://*ipofupstreamserver*:9002;
}

server {
        listen 9005 ssl http2;
        ssl_certificate         *path-to-certificate*;
        ssl_certificate_key     *patch-to-private-key;
        server_name xyz.yourdomain.com;

              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass      http://*ipofupstreamserver*:9005;
}

当然,您可能需要调整是否要使用 http 或 https 进行上游通信,或者您可以将显示登录界面的前端放到标准端口 443 上(如果它应该面向公众),并且还有大量其他选项可以调整,但这应该可以帮助您入门。

相关内容