26
40

More than 5 years have passed since last update.

CentOSにNginxをApacheと同居させる

Last updated at Posted at 2014-11-22

前書き

どうせならNginxをリバースプロキシとして立てて、静的なコンテンツは全部Nginx、動的なコンテンツはApacheにパス、みたいな構成をやりたかったので。

セットアップ

前準備

衝突を避けるためApacheのポートは前もって80番から変えておきます。

$ grep ^Listen /etc/httpd/conf/httpd.conf
Listen 8080

インストール

$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ cat /etc/yum.repos.d/nginx.repo
# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

$ sudo yum install nginx

起動と確認

$ sudo service nginx start

ブラウザでアクセスして
「Welcome to nginx!」
って出てきたらOK。

リバースプロキシ設定

$ sudo vim /etc/nginx/conf.d/reverse_proxy.conf

いろいろ試行錯誤しましたが、結局こんな感じで設定しました。

ちなみにdefault.confの中身は全部コメントアウトしました。

/etc/nginx/conf.d/reverse_proxy.conf
server {
    listen      80;
    server_name localhost;

    error_page  404                 /e/404.html;
    error_page  500 502 503 504     /e/50x.html;

    location /e/ {
        root /usr/share/htdocs/error;
    }

    location / {
            proxy_pass http://127.0.0.1:8080;

            proxy_redirect                          off;
            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;
    }

    location ~* ^/(static|icons)/ {
        root /usr/share/htdocs/default;
        index index.html;
    }
}

これでstaticとiconディレクトリ以下にアクセスした時はnginxが直接返し、それ以外のときはApacheに流す、の流れになった模様。
一応アクセスログも見て確認できました。

ちょっとエラーページ周りの設定が微妙だけど、そこは目を瞑る。
とりあえずデフォルトのエラーページ出したくなかったんや。。。

mod_rpaf

このままだとApache側でアクセス元アドレスが取れないとか不都合が出るので、その辺りを修正していく。

$ sudo yum install httpd-devel

$ mkdir mod_rpaf-0.6
$ cd mod_rpaf-0.6
$ wget https://raw.github.com/ttkzw/mod_rpaf-0.6/master/mod_rpaf-2.0.c

$ sudo apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
$ sudo vim /etc/httpd/conf.d/mod_rpaf.conf
$ sudo cat /etc/httpd/conf.d/mod_rpaf.conf
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-Forwarded-For

$ sudo service httpd restart

完了

ひとまずこれでやりたかったことは完了。
案外うまくいくもんだなー、と思いつつセキュリティ的に何か見落としてないかとか色々心配ではある。

参考

26
40
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
40