Nginxのリバースプロキシを置くようにした

Posted by nogajun - 2019/10/13

_

自宅サーバーを少しづつモダンなサーバー環境に整えていく作戦その2。

昔ながらのApacheを置く形から、一番前にNginxのリバースプロキシを挟んで後ろに置いたApacheに割り振るようにした。 次はLet's EncryptでSSL化にするか、Docker、LXDの移行かな。

メモ

注意: SSL化していないので、ここの設定はhttp(80)だけです。

nofuture.tvはバーチャルホストでいくつかのサブドメインに分けて運営してますが、Apache2でやってます。今回、Apache2のバーチャルホストの設定もnginx側に持ってきてもよかったのですが、ここでは何も変更せず、来たものをそのままApache2に渡すだけにしています。

1. apache2のポートを変更する。

/etc/apache2/ports.conf のListenポートを80と443以外の適当なポート番号(たとえば10080と10443とか)に変更。

2. nginxをインストールする。

これも特別なことはしておらず、 apt install nginx でインストールしただけ。

3. /etc/nginx/sites-available に各バーチャルホストごとの設定ファイルを作成する。

nginxの設定を検索するとCentOSの設定が鬼のように引っかかりますが、 Debianで、それを真似はいけません設定の置き方はDebianの流儀があるので、それに沿って設定を置きましょう。

ということで、バーチャルホストの設定は /etc/nginx/sites-available にバーチャルホストごとの設定ファイルを作成します。といっても、server_name宛にアクセスしてきたものを後ろのApache2側にそのまま投げるだけです。

 server {
   listen: 80;
   server_name www.nofuture.tv;

   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-Proto $scheme;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   location / {
     proxy_pass http://localhost:10080;
   }
 }

4. /etc/nginx/sites-enabled/etc/nginx/sites-available 以下の設定ファイルのシンボリックリンクを貼る。

Apache2ではa2ensite/a2dissiteというスクリプトがありますが、nginxには無いので、 ln -s でシンボリックリンクを貼ります。

5. Apache2とnginxを再起動する。

できたら、systemctlでApache2とnginxを再起動して終わり。