labunix's blog

labunixのラボUnix

Apache2のproxyモジュールでリバースプロキシ

■Apache2のproxyモジュールでリバースプロキシ

 話せば長くなるけど、設定は簡単。

 外側からの9080アクセスはNATの内側のApache2の80ポートに転送、
 「/zabbix」のときだけ、proxyモジュールで別のApache2が稼働している
 Zabbixサーバへリバースプロキシアクセスすることで、
 Ciscoルータのポート転送設定を簡略化したい。

■要はポート転送を複数作るのも面倒だし、
 クライアント側も面倒なので以下のようにしたいというだけのこと。

 http://172.16.16.10:9080/        -> http://192.168.152.152/
 http://172.16.16.10:9080/zabbix/ -> http://192.168.152.151/zabbix/

■「192.168.152.151:80」だけが頑張れば、
 haproxyよりも簡単に出来そうという思いつきが重なって。。。

 "172.16.16.10:9080/*" -> \
  if [ REQUEST='/zabbix/' ] ;then \
    "-> 192.168.152.151:80/zabbix/"
  else
    "-> 192.168.152.152:80"
  fi

■Cisco側のoutside側の現在の設定

R1# show running-config | section FastEthernet0
ip domein lookup source-interface FastEthernet0
interface FastEthernet0
 ip address 172.16.16.10 255.255.255.0
 ip nat outside
 ip virtual-reassembly
ip route 172.16.16.10 255.255.255.0 FastEthernet0
ip nat inside source list 10 pool PAT Overload
ip nat inside source static 192.168.152.152 80 interface FastEthernet0 9080

■inside側の192.168.152.0/24のアクセスに対して172.16.16.10でNATしますよという意味。

R1# show running-config | section PAT
ip nat pool PAT 172.16.16.10 172.16.16.10 prefix-length 24
ip nat inside source list 10 pool PAT overload

R1# show access-lists 10
    10 permit 192.168.152.0,wildvard bits 0.0.0.255(24798 matches)
    20 deny   any(53961 matched)

■inside側のVLAN10の設定
 CiscoルータはGWですよという意味。

R1# show running-config | section Vlan10
interface Vlan10
 ip address 192.168.152.254 255.255.255.0 Vlan10
 ip nat inside
 ip virtual-reassembly
ip route 192.168.152.0 255.255.255.0 Vlan10
logging source-interface Vlan10

■Vlan10はFastEthernet2が所属
 ネゴシエーションで対向のESXi側が半二重になっていた経験があるので、
 両側とも100M全二重で固定。

R1# show running-config | section FastEthernet2
interface FastEthernet2
 description HyperVisor
 switchport access vlan10
 duprex full
 speed 100

■このESXi5.5配下の標準スイッチの内側の2台のゲストのdebianに
 Webのリクエストを振り分けるという話なのですが、
 それは今回の件とは関係無いので、スルー。
 Ciscoルータも今回は設定変更しないので、スルー。

■さて本題。apache2のproxyモジュールを有効にする。

$ sudo a2enmod proxy
Enabling module proxy.
To activate the new configuration, you need to run:
  service apache2 restart

$ ls /etc/apache2/mods-enabled/ | grep proxy
proxy.conf
proxy.load

$ sudo /etc/init.d/apache2 reload
[ ok ] Reloading web server config: apache2.

■リバースプロキシ用のサイトを作成

$ cat /etc/apache2/sites-available/zabbix-proxy
ProxyRequests Off
<Proxy *>
	Order allow,deny
	Allow from all
</Proxy>

ProxyPass /zabbix http://192.168.152.151/zabbix/
ProxyPassReverse /zabbix http://192.168.152.151/zabbix/

■サイトを有効化

$ sudo a2ensite zabbix-proxy && sudo /etc/init.d/apache2 reload

■/zabbix/へのアクセス確認。
 ログイン正常。リバースプロキシ経由で自動更新もされます。
 クッキーの設定等はとりあえずスルー。様子見。
 また、通常のWebサイトはそのまま見れます。