Raspberry Pi3でNginxとApacheを共存させてみた

NginxはApacheと双璧をなす高速なフリーのWebサーバーです。メモリー使用量が少なく、高性能であり、大量のアクセスを処理できるという特徴を持っています。2004年頃に開発され、現在ではアクティブのWebサイトの約4割で利用されています。ここではNginxとApacheの共存について紹介していきます。

01: インストール

bash


# Apacheのポート番号を変更
$ sudo nano /etc/apache2/ports.conf

# バーチャルホストのポート番号を変更
$ sudo nano /etc/apache2/sites-available/000-default.conf

# Apacheを再起動
# daemon-reload: systemd管理下のファイルをリロードして、依存関係の階層を再構築します。
# .serviceファイルなどを更新した場合に実行します。
$ sudo systemctl restart apache2.service
$ sudo systemctl daemon-reload

# Nginxをインストール
$ sudo apt-get install nginx

# デフォルトのドキュメントルートを変更
$ sudo nano /etc/nginx/sites-available/default

# Nginxに来たアクセスをApacheに転送
$ sudo nano /etc/nginx/sites-available/apache

# ロードバランサー用の設定を有効化
$ sudo ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled/

# Nginxを再起動
$ sudo systemctl restart nginx.service

ports.conf


...
Listen 8080
...

ports.conf


<VirtualHost *:8080>
...

default


...
root /usr/share/nginx/html/;
...

apache


server {
  server_name 192.168.11.20;
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}

02: Apatcheのアクセスログに訪問者のIPアドレスを表示

bash


# libapache2-mod-rpafのインストール
$ sudo apt-get install libapache2-mod-rpaf

# 設定ファイルの編集
$ sudo nano /etc/apache2/mods-available/rpaf.conf

# Apacheの再起動
$ sudo systemctl restart apache2.service

# アクセスログを表示
$ cat /var/log/apache2/access.log | tail -n 1
#Before:
127.0.0.1 - - [24/May/2017:17:04:12 +0900] "GET / HTTP/1.0" 200 3345 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E277 Safari/602.1"

#After
192.168.11.5 - - [24/May/2017:17:08:43 +0900] "GET / HTTP/1.0" 200 3345 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30"

rpaf.conf


...
RPAFproxy_ips 127.0.0.1 192.168.11.20 ::1
...