みなさん、こんちには。KEYチームの矢納です。
頑張って技術ネタを連続で投稿していこうと思っています。
過去記事の目次はこちらに移動しました。
今回はApacheでProxyを行う方法です。よくこの関連記事は見るのですが、毎回忘れてしまうのでここに残します。
Apacheをインストールしよう
今回はCentOS7にインストールします。
# yum -y install httpd
自動起動の設定を追加し、Apacheの起動です。
# systemctl enable httpd.service # systemctl list-unit-files | grep httpd httpd.service enabled # systemctl start httpd
Proxyを有効にする
httpd.confでProxyのmoduleを有効にする。 httpd.confは今回/etc/httpd/conf
にありました。
#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so この2行のコメントアウトを外す
とおもっていたのですが、56行目が
Include conf.modules.d/*.conf
となっています。 なので/etc/httpd/conf.modules.d/
のディレクトリの中を覗いてみました。
-rw-r--r-- 1 root root 3739 Mar 12 14:57 00-base.conf -rw-r--r-- 1 root root 139 Mar 12 14:57 00-dav.conf -rw-r--r-- 1 root root 41 Mar 12 14:57 00-lua.conf -rw-r--r-- 1 root root 742 Mar 12 14:57 00-mpm.conf -rw-r--r-- 1 root root 894 Mar 12 14:57 00-proxy.conf -rw-r--r-- 1 root root 88 Mar 12 14:57 00-systemd.conf -rw-r--r-- 1 root root 451 Mar 12 14:57 01-cgi.conf
たくさんありました(^^; 上記の二つのモジュールを有効にする必要が有るので検索です。
# grep -e mod_proxy.so -e mod_proxy_ajp.so * 00-proxy.conf:LoadModule proxy_module modules/mod_proxy.so 00-proxy.conf:LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
あれ?最初から有効になっていますね。
Proxy設定を追加する
Proxyの設定をhttpd.confに追加しましょう。
ProxyPass /static ! ProxyPass /api http://localhost:8080/twm ProxyPassReverse /api http://localhost:8080/twm
この設定は
- /static/* のアクセスは何もしない
- /api/* のアクセスは http://localhost:8080/api/* に転送する
おわりに
CORS(Cross-Origin Resource Sharing)を避けるためによくProxyを使って回避するのですが、一度設定してしまえばもう見ることのない部分です。また、他の人が設定してしまえばさらに見ることはかなり減ってしまいます。
そのようなわけでよく忘れてしまうのです(^^;
Email: yanou at atware.co.jp