Apacheを動かしながらnginxをリバースプロキシに設定するメモ
すでにApacheで動かしているサーバで,nginxのリバースプロキシ機能を利用するための
設定をしたときのメモ.
nginxの設定
接続元のIPなどを保持しておくための設定と,キャッシュのための設定をする.
http { ... # Reverse proxy settings proxy_headers_hash_max_size 1024; proxy_headers_hash_bucket_size 256; 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_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_read_timeout 600s; proxy_connect_timeout 10s; proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=cache1:15m inactive=7d max_size=1000m; proxy_temp_path /usr/local/nginx/proxy_temp; ... }
同じくキャッシュの設定と,リバースプロキシで接続し直す設定をしておく.
# Reverse proxy settings server { listen 80; server_name .ほげほげ; client_max_body_size 5m; location ~ .*\.(htm|html|jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) { root html; index index.html; break; } location / { proxy_pass http://127.0.0.1:8080; #proxy_redirect off; proxy_cache cache1; proxy_cache_key $scheme$proxy_host$uri$is_args$args; proxy_cache_valid 200 1d; } }
ポート80で受けた接続をポート8080につないだ.
apacheの設定
Listenするポートを8080にしておく.また,バーチャルホストへの接続はリバースプロキシ(自身のサーバ)からのみ受け付けるようにするため,127.0.0.1:8080に.
Listen 8080 NameVirtualHost 127.0.0.1:8080...
リバースプロキシを通ってポート8080にリクエストが来るので,httpdを8080で待機させる設定をする.
mod_rpafまたはmod_extract_forwardedを入れる.mod_rpafだと.htaccessファイルによるアクセス制限ができないらしいと書いてるブログがあったが,最新の0.6だとできるようになってるという記事もあったのでよくわからない.
$ wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz $ tar zxvf mod_rpaf-0.6.tar.gz $ cd mod_rpaf-0.6 $ sudo apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
$ curl -O http://www.openinfo.co.uk/apache/extract_forwarded-2.0.2.tar.gz $ tar xvf extract_forwarded-2.0.2.tar.gz $ cd extract_forwarded-2.0.2 $ sudo apxs -i -c -a mod_extract_forwarded.c
注意 → mod_rpaf のかわりに mod_extract_forwarded なるものがあるらしいAdd Star
リバースプロキシ環境下のapacheではmod_extract_forwardedよりもやっぱりmod_rpaf?
インストールしたらhttpd.confでモジュールをロードする.今回は無難そうなrpafで.
LoadModule rpaf_module modules/mod_rpaf-2.0.so
rpafの設定をhttpd.confに追記すればすべて完了.
RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1
再起動を忘れずに.
$ sudo service httpd restart $ sudo service nginx restart
中身いじったのに全然見た目が変わらないときは,キャッシュを一度切ってから更新してみるとよい.
参考:
http://inputxoutput.com/nginx-apache-mod_php-wordpress-2/
http://tjun.org/blog/2011/09/nginx/
ディスカッション
コメント一覧
まだ、コメントがありません