nginx 反向代理 SSL

nginx 反向代理 SSL

目标

  • 有一个单身的nginx 反向代理所有子网站在其他端口上运行)。
  • 堵塞所有直接连接,而是通过 nginx 路由。

问题)

  • 502 gateway errors当尝试访问https://www.example.com/site1/连接到上游时 connect() 失败(111:连接被拒绝)

设置

  • example.com 在端口 80 上运行(nginx)。
  • site1 和 site2 分别在端口 8001 和 8002 上运行。

nginx 配置

    worker_processes 1;

    events { worker_connections 1024; }

    http {
        sendfile on;

        upstream site1 {
            server 127.0.0.1:8001;
        }

        upstream site2 {
            server 127.0.0.1:8002;
        }

        server {
            listen 80 default_server;
            server_name _;
            return 301 https://$host$request_uri;
        }

        server {

            listen 443 ssl;
            listen [::]:443 ssl;
            gzip on;
            access_log on;
            log_not_found on;
            error_log  /var/log/nginx/error.log error;
            server_name example.com www.example.com;
            charset UTF-8;
            root /var/www/html;
            error_page 404 /404.html;

            ssl_prefer_server_ciphers on;
            ssl_certificate /etc/ssl/server.crt;
            ssl_certificate_key /etc/ssl/server.key;

            location /site1/ {
                proxy_set_header X-Original-Request $request_uri;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://site1;
            }

            location /site2/ {
                proxy_set_header X-Original-Request $request_uri;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://site2;
            }
        }
    }

在设置 nginx 反向代理时遇到一些问题。如果能提供这方面的帮助,我将不胜感激。非常感谢。

答案1

阻止到端口 8000/8001 的所有直接连接:

  1. 使用 IPtables/firewalld/ufw 关闭 8000/8001 端口的防火墙
  2. 禁止任何外部 IP 地址访问 8000/8001 上的内容(来自 nginx 的请求将来自本地主机)。

然后你说“我遇到了一些问题”。这些问题到底是什么并不清楚。我假设你的应用程序想要在 / 上运行,而你却试图在 /site1 和 /site2 上运行它们。请确保你的应用程序允许你在适当的 URI 上运行它们。

相关内容