AB Lab

abgata20000 blog.

Nginxとapacheの共存

参考URL:

nginxでリバースプロキシした際にIP情報を正しく取れるようにモジュールを追加

1
2
3
4
5
6
7
sudo yum install httpd-devel

cd /root/tmp
wget http://www.openinfo.co.uk/apache/extract_forwarded-2.0.2.tar.gz
tar zxf extract_forwarded-2.0.2.tar.gz
cd extract_forwarded
apxs -i -c -a mod_extract_forwarded.c

apacheの実行ユーザーとポートを変更

1
vim /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Listen 8080

#####
User nginx
Group nginx
#####
ServerName sample.jp:8080

# 最終行に追加
MEForder refuse,accept
MEFrefuse all
# Nginx(リバースプロキシ)のIPアドレス
MEFaccept 127.0.0.1


# ヴァーチャルホスト使っている場合はヴァーチャルホストのポートも変更

apacheを再起動して設定を反映

1
service httpd restart

nginxでの転送設定

1
2
cd /etc/nginx/conf.d
vim default.conf
default.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#デフォルトサーバー
server {
    listen       80;
    server_name  backend;

    # このサーバへの全てのアクセスを転送
    location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect                         off;

            # この設定がなくても.htaccessでの制限は可能。
            # ただし、cgi等から参照した際にNginxのIPアドレスになる。
            proxy_set_header Host                   $host;

            proxy_set_header X-Real-IP              $remote_addr;

            # 以下は、cgi等で明示的に利用していなければ、有効にする必要なし。
            proxy_set_header X-Forwarded-Host      $host;
            proxy_set_header X-Forwarded-Server    $host;

            # この設定がなくてもcgi等から正しいIPを確認可能。
            # ただし、.htaccessでの制限は不可。
            proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    }
}

最初に↓入れたほうがいいかも??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# キャッシュ関連設定
proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=czone:4m max_size=50m inactive=120m;
proxy_temp_path   /var/tmp/nginx;
proxy_cache_key   "$scheme://$host$request_uri";
proxy_set_header  Host               $host;
proxy_set_header  X-Real-IP          $remote_addr;
proxy_set_header  X-Forwarded-Host   $host;
proxy_set_header  X-Forwarded-Server $host;
proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;

# バックエンドサーバ−(Apache)設定
upstream backend {
    # ip_hash;
    server 127.0.0.1:8080;
}

nginxを再起動して設定を反映

1
service nginx restart