私はUbuntu10.04 nginxサーバーを実行しており、Apacheへのリバースプロキシを使用しています(muninモニタリングを実行するため)。
これは私のデフォルトのApacheサイトファイルの抜粋です。
<VirtualHost *:8090>
ServerAdmin webmaster@localhost
DocumentRoot /var/cache/munin/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
そして、私のexample.comnginx構成ファイルの抜粋:
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はmuninWebディレクトリを提供します。それは素晴らしい働きをします。
ただし、別のドメインを追加したい場合は、example.org?別のnginx構成ファイルがありますが、 ApacheのDocumentRoot
を他のものにするにはどうすればよいですか?リクエストはnginxからローカルホストポート8090を介してApacheに着信するため、Apacheはリクエストの発信元のサイトと、リクエストを処理するためのDocumentRoot
/configurationをどのように判断できますか?
Nginxで設定されたヘッダーを使用する必要があると思います($Host;
または$proxy_add_x_forwarded_for;
変数?)Apacheではどういうわけか...
1つの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に2つの仮想構成を追加します
<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>