nginxとapacheでリバーシプロキシとCGIを動かす
nginxは小さくて速いという話を聞きました。
そこでnginxで静的コンテンツをapacheで動的コンテンツを処理するようにしました。
(nginxはcgiを処理できないのでapacheを使います)
覚え書きと思い込みが多いと思うので間違いがあれば教えて下さい。
さっそくnginxをどうやっていれたか忘れたのですが
sudo apt-get install nginx /etc/init.d/nginx start
これでインストールできて立ち上がるはずです。
nginxの設定ファイルは以下のようになります。
# /etc/nginx/conf.d/vhost.conf server { listen 80; server_name hogehoge.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_max_temp_file_size 0; location / { root /var/www break; } location /cgi-bin { proxy_pass http://127.0.0.1:8082; break; } }
proxy~の部分でapacheにアクセス元の情報を渡します。
(通常はnginxの情報がapacheに渡ってしまいます)
動的コンテンツを処理するapacheの設定は以下になります。
まずはnginxがリバースプロキシになるのでapachのポート80設定をコメントアウトします。
# /etc/apache2/ports.conf #NameVirtualHost *:80 #Listen 80
そしてapacheの設定ファイルを以下のようにします。
# /etc/apache2/site-available/mysite NameVirtualHost 127.0.0.1:8082 Listen 8082 <VirtualHost 127.0.0.1:8082> ServerName hogehoge.com DocumentRoot /var/www/ RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 RPAFheader X-Forwarded-For </VirtualHost>
RPAF~はapacheからアクセス元の情報を取得できるようにするモジュールで、
RPAF~を使えるようにするためにはdebianの場合以下のようにします。
sudo apt-get install libapache2-mod-rpaf sudo a2enmod rpaf
CentOSの場合は以下を参照
はてなダイアリー
これで動的コンテンツの処理だけapacheに任せられて快適です。
いずれapacheもstarmanとかに変えていければと思います。
後、なぜか設定が反映されないなと思っていたらキャッシュされていました。
今回の変更でapacheの設定が見直せてよかったです!
ウノウラボ by Zynga Japan: Tips for nginx
軽量高速Webサーバのnginxで静的コンテンツ配信とキャッシュコントロール | KRAY Inc