首页 > 解决方案 > Nginx 反向代理 + Apache/Varnish

问题描述

我最近在端口 80 上设置了一个基于 Apache 的服务器,其中包含大约 3 个虚拟主机/域 + Varnish。假设 example1.com、example2.com 和 example3.com。这些都托管在一台服务器上。现在,我想安装一个第三方软件,它也需要在端口 80 上。如果你只有一个公共 IP,你不能将它指向 DNS 管理器中的特定服务器。这就是为什么我想设置一个带有反向代理的 Nginx 服务器,以便使用 1 个端口并将其指向正确的服务器。

成功设置我的 Nginx 服务器后,我将其放入:

server {
      server_name example1.com;
    
      location ~ {
        proxy_pass_header Authorization;
        proxy_pass http://example1.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
        client_max_body_size 0;
        proxy_read_timeout 36000s;
        proxy_redirect off;
      }
    }

server {
      server_name example2.com;
    
      location ~ {
        proxy_pass_header Authorization;
        proxy_pass http://example2.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
        client_max_body_size 0;
        proxy_read_timeout 36000s;
        proxy_redirect off;
      }
    }

server {
      server_name example3.com;
    
      location ~ {
        proxy_pass_header Authorization;
        proxy_pass http://example3.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
        client_max_body_size 0;
        proxy_read_timeout 36000s;
        proxy_redirect off;
      }
    }

在里面/etc/hosts

192.168.10.10 example1.com
192.168.10.10 example2.com
192.168.10.10 example3.com

完成此操作后,它在技术上有效。但我不认为这是最好的解决方案。所有服务器都在同一个局域网上,但由于我有 3 个虚拟主机,我不能只输入192.168.10.10:443proxy_pass 我相信...因为源服务器不知道要服务哪个虚拟主机?我还考虑过为源服务器上的每个虚拟主机提供自己的端口,但我不知道这是否是个好主意。我知道 Cloudflare 也不需要您对源服务器进行任何更改,因此不应该要求彻底检修您的源服务器。

如果有人对处理这个特殊的“问题”有很好的建议,那么谢谢!

标签: apachenginxreverse-proxyvirtualhost

解决方案


推荐阅读