Edited at

NginxとApache

More than 5 years have passed since last update.


前提

通常WEBサーバーとしてApacheを使用している環境で、

Nginxをプロキシサーバーとしてフロントにたて、

Apacheをバックエンドにして、

処理を高速化するようにします。

私の環境は

CentOS 6.4

Apache 2.2.15

Nginx 1.0.15

です。

Apacheは既にインストール済みとします。


mod_rpaf

Apacheモジュールのmod_rpafをインストールします。

mod_rpafについてはここが参考になるかと思います。

http://heartbeats.jp/hbblog/2012/03/mod-rpaf.html

ーーーーーーーーーー

sudo yum install -y httpd-devel

cd /usr/local/src/

sudo wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz

sudo tar xvzf mod_rpaf-0.6.tar.gz

cd mod_rpaf-0.6

Makefileの4行目あたりを編集する。

#APXS2=$(shell which apxs2) ←コメントアウト

APXS2=/usr/sbin/apxs ←追記

sudo make rpaf-2.0

sudo make install-2.0

sudo chmod 755 /usr/lib64/httpd/modules/mod_rpaf-2.0.so

ーーーーーーーーーー


Nginx

Nginxをインストールして、プロキシサーバー設定をします。

ーーーーーーーーーー

sudo yum install -y nginx

バージョン確認

yum list installed | grep nginx

nginx.x86_64 1.0.15-5.el6 @epel

proxy用のconfファイルを作成

sudo vi /etc/nginx/conf.d/proxy.conf

以下を記載する

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-Host $http_host;

proxy_set_header X-Forwarded-Server $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

cd /etc/nginx/

sudo mkdir sites-available

sudo mkdir sites-enabled

nginx.conf の httpセクションに次の1行を加える。

include /etc/nginx/sites-enabled/*;

/etc/nginx/sites-available/{ドメイン名など適当な名前}

を作成し以下のようにヴァーチャルホストを設定

server {

listen 80;

server_name .{ドメイン名};

 #ドメイン名の前にドットが付いているのはすべてのサブドメインを対象としているため

 #バックエンドサーバーのポートは8000としています

location / {

proxy_pass http://localhost:8000;

proxy_redirect default;

break;

}

}

シンボリックリンクを作成

cd /etc/nginx/sites-enabled/

sudo ln -s ../sites-available/{ドメイン名など適当な名前}

ーーーーーーーーーー


Apache

ポート変更とmod_rpafの読み込み設定をします。

※ポートはここでは8000に変更しています。

httpd.confの設定

まず、

Listen 80 やNameVirtualHost *:80 などport80を指定している箇所を8000にします。

次に、

VirtualHostの宣言の手前あたりに以下を記述しておきます。

#Reverse Proxy

LoadModule rpaf_module /usr/lib64/httpd/modules/mod_rpaf-2.0.so

RPAFenable On

RPAFsethostname On

RPAFproxy_ips 127.0.0.1 10.0.0.1

RPAFheader X-Forwarded-For

Apacheを再起動して、

通常のURLでアクセスできずに、ドメイン:8000 でアクセスできればOKです。


最後に

Nginxを起動して、

sudo /etc/init.d/nginx start

指定ドメインにアクセスできればOKです。

グローバルで

ドメイン:8000でアクセスできてしまうので、

Apacheのhttpd.confで

Nginx(ローカルホスト)からのみ受け付けるように変更します。

これで完了です!