リバースプロキシの設定方法について
2022/10/14
こんにちは!バックエンドエンジニアの山中です。
今週のコラムは
リバースプロキシの設定方法(Apacheでの設定手順)
をテーマにお話しさせていただきます。
〇リバースプロキシって?
一般的にはリバース(reverse)は逆とか反対の意味、プロキシ(proxy)は
代理や代理人の意味があります。
元々は直接サーバーに繋がるところを、その中間に新たに「仲介」してくれるプロキシのイメージです。
その設置を、逆の発想で活用したのがリバースプロキシの技術です。
実際は、リバースプロキシサーバを設置する事で負荷の分散などに利用されることが多いですが、
今回は新サーバへ移行作業中、旧サーバに残さないといけないシステムがあったために
この技術を利用しました。
〇環境
Apache 2.4
〇内容
新サーバにサイトを移行。
特定ディレクトリにアクセスがあった場合のみ旧サーバにアクセスを行う。
旧サーバにアクセスするディレクトリは PHPフレームワーク「Laravel」で構築
〇設定方法
apacheインストール後、httpd.confに設定を行う。
※apacheインストール時「mod_ssl」が入っていない場合はインストールを行う。
※今回のサイトはSSL化されているのでVirtualHostも443で対応。
www.xxxxxxxxx.com … 新サーバアクセスドメイン
111.222.333.444 … 旧サーバIPアドレス
https://www.xxxxxxxxx.com/pg … このディレクトリにアクセスがあった場合に旧サーバに遷移
# vi /etc/httpd/conf/httpd.conf
# ドメインアクセス時のドキュメントルート設定
ServerName www.xxxxxxxxx.com
DocumentRoot "/var/www/html/web/"
# SSL証明書の設定
SSLEngine on
SSLCertificateChainFile /etc/ssl/www.xxxxxxxxx.com.ca.crt
SSLCertificateFile /etc/ssl/www.xxxxxxxxx.com.crt
SSLCertificateKeyFile /etc/ssl/www.xxxxxxxxx.com.key
# SSL利用時のプロキシ設定
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
# オープンプロキシになるのでOFF
ProxyRequests Off
ProxyPreserveHost Off
# 指定ディレクトリにアクセスがあった場合に、旧サーバを利用
ProxyPass /pg https://111.222.333.444/pg
ProxyPass /api https://111.222.333.444/api
ProxyPassReverse /pg https://111.222.333.444/pg
ProxyPassReverse /api https://111.222.333.444/api
# 旧サーバでドメイン/パス情報を書き換える
ProxyPassReverseCookieDomain 111.222.333.444 www.xxxxxxxxx.com
ProxyPassReverseCookiePath /pg /
ProxyPassReverseCookiePath /api /
〇設定時の問題点
今回、一番問題となったのが旧サーバ上で動作しているlalavelセッションでした。
実際に旧サーバへの遷移が必要だった「/pg」ディレクトリへの設定とは別に
セッション通信は別ディレクトリでやり取りが行われていたために、
入力ページ⇒確認ページなどの場合にセッションを維持できず、入力ページに
リダイレクトがかかる状況でした。
今回の場合は「/api」ディレクトリも併せて、旧サーバを利用する事で対応が可能となりました。
----------------------------------------------------------------------
株式会社AQUARIZE
〒531-0072
大阪市北区豊崎3-6-8 TOビル404
電話番号 : 06-7777-2927
----------------------------------------------------------------------