Apache-2.2
多站點 Nginx 反向代理路由到 Apache
我正在執行一個 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>