1台目はcentosでapacheが動いている。
2台目をリバースプロキシにして、今まで1台目にアクセスするときに使用していたURLに
クライアントがアクセスすると、2台目がリクエストを1台目に転送するようにする。
別にそうする必要性はなにもないのだが、ちょっとやってみたかっただけ。
まず、DNSに登録している既存のAレコードを、新しいサーバのIPアドレスに変更する。
<今まで>
www.example.com 123.xx.xx.100
<変更後>
www.example.com 123.xx.xx.200 ※2台目
www2.example.com 123.xx.xx.100 ※1台目
2台目はubuntuをインストールし、httpdはnginxにする。
これも必要性は別になく、違うものを使ってみたかっただけ。
ubuntuをインストールしたばかりなので、
sudo apt-get update
をする。
sudo apt-get upgrade
もする。
これらの必要性もいまいちよくわからないが、一応やっておく。
nginxをインストールする。
sudo apt-get install nginx
firewallを設定する。
sudo ufw allow http
クライアントから www.example.com にアクセスしてみる。
nginxのテストページが表示される。
リバースプロキシの設定の仕方は、検索するとたくさん出てくるが、
設定をどこに書くかが人によって違う。
いろいろ試したが、/etc/nginx/nginx.conf に書いたら動いた。
sudo vi /etc/nginx/nginx.conf
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
...............
}
"http"のところに、下記の内容を追加する。
## reverse proxy
server {
server_name www.example.com;
location / {
proxy_pass http://123.xx.xx.100; ※転送先のWEBサーバのIPアドレス
}
}
これでとりあえず、動く。
ほかにもいろいろ設定したほうがよいところなどがあるようだが、
とりあえず下記の2行を追加した。
## reverse proxy
server {
server_name www.example.com;
location / {
proxy_pass http://123.xx.xx.100;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ※1
proxy_set_header X-Forwarded-Host $host; ※2
}
}
これらがないと、転送先のサーバのアクセスログで、アクセス元が全部リバースプロキシになってしまう。
私のWEBサイトには、アクセス者のIPアドレスとホスト名を表示するページがあるのだが、
そこが全部リバースプロキシサーバのIPアドレスとホスト名になってしまう。
※1だけいれれば変わると思ったが、変わらず、
※2をいれてようやく変わった。
※2だけでいいのかと試したらダメで、どうも両方必要なようだ。
nginxの設定を確認したいときは
$ sudo /etc/nginx$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
サービスの再起動
$ sudo service nginx restart