Linuxサーバー
既存のLAMPサーバーにNginxをリバースプロキシとして追加しました。
サーバー環境は下記の通りです。
- CentOS 6.4 64bit
- apache 2.2.15
- php 5.4.21
- mysql 5.5.33
以下、2013/10/21時点の情報になります。
Nginxとapacheは同一サーバーで動作させ、Nginxは80番ポート、apacheは8080番ポートで動作させます。
また、Virtual Hostは使用せず、すべてのアクセスをapacheに転送します。
Nginxのインストール
epelリポジトリのNginxはバージョンが古いため、Nginx本家のリポジトリから最新バージョンをインストールします。
# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
# yum install nginx
CentOS以外のOSでは、下記を参考にしてください。
http://wiki.nginx.org/Install
Nginxの設定
デフォルト設定ファイルを削除または、conf以外の拡張子にリネームしてincludeされないようにします。
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.dist
リバースプロキシ用の設定ファイルを追加します。
server_nameは実際のホスト名に合わせて変更します。
# vim /etc/nginx/conf.d/proxy.conf server { listen 80; server_name localhost; charset utf-8; keepalive_timeout 65; server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay off; index index.php index.html index.htm; location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; client_max_body_size 10m; client_body_buffer_size 128k; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; } }
設定ファイルをテストします。
# nginx -t
Nginxを起動します。
# service nginx start
Apacheの設定変更
動作させるポート番号を80から8080に変更します。
# vim /etc/httpd/conf/httpd.conf
Listen 80を下記に変更します。
Listen 8080
mod_rpafのインストール
Apache上でリバースプロキシーではなく元のアクセス元のIPアドレスを参照できるようにするためにmod_rpafをインストールします。
アクセスログにアクセス元を記録させるだけで良ければ、access_logのLogFormatにX-Forwarded-Forを追加するだけで済みます。なお、apahche 2.2ではerror_logのフォーマットを変更することはできません。(apache 2.4では変更可能になっています)
mod_rpafはソースコードからインストールするか、atomicリポジトリからyumでインストールします。
# wget -q -O - http://www.atomicorp.com/installers/atomic | sh # yum install mod_rpaf
apacheの設定をテストしてOKなら再起動します。
# service httpd configtest # service httpd restart
以上で、Nginxをインストールする前と同様にWebサイトにアクセスできるようになりました。
動作に問題なければNginxを自動で起動するように設定します。
# chkconfig nginx on