Apache-2.2

多站點 Nginx 反向代理路由到 Apache

  • August 7, 2019

我正在執行一個 Ubuntu 10.04 nginx 伺服器,帶有 apache 的反向代理(執行 munin 監控)。

這是我的預設 Apache 站點文件的摘錄:

<VirtualHost *:8090>
   ServerAdmin webmaster@localhost

   DocumentRoot /var/cache/munin/www
   <Directory />
       Options FollowSymLinks
       AllowOverride None
   </Directory>

以及我的example.com nginx 配置文件的摘錄:

location /stats {
   proxy_pass              http://127.0.0.1:8090/;
   proxy_redirect          off;
   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_buffers           32 4k;
}

每當我訪問example.com/stats時,nginx 都會通過埠 8090 指向 apache,而 apache 會提供 munin web 目錄。它工作得很好。

**但是如果我想添加另一個域,比如example.org怎麼辦?**我會有另一個 nginx 配置文件,但我如何讓 apache 成為DocumentRoot別的東西?由於請求是通過 localhost 埠 8090 從 nginx 進入 apache 的,apache 如何確定請求來自哪個站點,以及使用哪個DocumentRoot/configuration 來提供服務?

我假設我將不得不以某種方式在apache中使用由nginx($host;$proxy_add_x_forwarded_for;變數?)設置的標頭檔……

我在一個 nginx.conf 文件上執行多個域。試試這個:

server {
   listen xxx.xxx.xxx.xxx:8090;
   server_name example.org;
   proxy_set_header X-Real-IP  $remote_addr;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   location / {
       proxy_pass http://127.0.0.1:8090;
   }
}

server {
   listen xxx.xxx.xxx.xxx:8090;
   server_name example.com;
   proxy_set_header X-Real-IP  $remote_addr;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   location / {
       proxy_pass http://127.0.0.1:8090;
   }
}

然後在你的 apache 中添加兩個虛擬配置

<VirtualHost *:8090>
ServerName example.org
ServerAdmin webmaster@localhost

DocumentRoot /var/cache/munin/www
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>
</VirtualHost>

<VirtualHost *:8090>
ServerName example.com
ServerAdmin webmaster@localhost

DocumentRoot /var/cache/munin/www2
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>
</VirtualHost>

引用自:https://serverfault.com/questions/345799