ZopeとApacheの連携 [Plone3.3]
ここでは Apache でプロクシを行い、Apache 経由で Zope にアクセスする仕組みを構築する。
Web サイトのホスト : www.example.ac.jp Plone のホスト : 192.168.2.2
Apacheの設定
モジュールの追加
mod_rewrite と mod_proxy が必要なので、読み込む設定を追加する。
/etc/httpd/conf/httpd.conf (抜粋)
LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
rewriteの設定
http でのアクセスを Apache でプロクシする場合は /etc/httpd/conf/httpd.conf の適当な場所(VirtualHost ディレクティブ内等)に、Zope の VirtualHostMonster が理解できる形で記述する。(\\は1行で入力)
RewriteEngine On RewriteRule ^/XXX[/]?(.*) http://192.168.2.2:8080/VirtualHostBase/ \\ http/www.example.ac.jp:80/YYY/VirtualHostRoot/_vh_XXX/$1 [P]
この例は Plone サイトに直接アクセス(http://192.168.2.2:8080/YYY)するかわりに、Apache 経由(http://www.example.ac.jp/XXX)でアクセスできるように書き換えを行った例である。
同様に、https でのアクセスを Apache でプロクシする場合は /etc/httpd/conf.d/ssl.conf の適当な場所(VirtualHost ディレクティブ内等)に、設定を記述する。(\\は1行で入力)
RewriteEngine On RewriteRule ^/XXX[/]?(.*) http://192.168.2.2:8080/VirtualHostBase/ \\ https/www.example.ac.jp:443/YYY/VirtualHostRoot/_vh_XXX/$1 [P]
この例では、Plone サイトに直接アクセス(http://192.168.2.2:8080/YYY)するかわりに、Apache 経由(https://www.example.ac.jp/XXX)でアクセスできるように書き換えが行われる。ただし、Web サイトと Plone サイト間の通信は暗号されない。
さらにログイン時のみSSL接続とするには、最終的に次のように設定すれば良い。
- http.conf
# ログインフォーム RewriteRule ^/XXX/(.*)login_(.*) https://www.example.ac.jp/XXX/$1login_$2 [NE,L] RewriteRule ^/XXX/(.*)require_login https://www.example.ac.jp/XXX/$1require_login$2 [NE,L] # それ以外 RewriteRule ^/XXX[/]?(.*) http://192.168.2.2:8080/VirtualHostBase/ \\ http/%{SERVER_NAME}:80/YYY/VirtualHostRoot/_vh_XXX/$1 [L,P]
- ssl.conf
下記の @@upload_file は collective.uploadify を用いる場合のみ必要。
# ログアウト時 RewriteRule ^/XXX/(.*)logged_out http://www.example.ac.jp/XXX/$1 [NE,L] # ログインしていない かつ ログインフォームでない RewriteCond %{HTTP_COOKIE} !__ac= RewriteCond %{REQUEST_URI} !^/XXX/.*(login_|require_login|@@upload_file).* RewriteRule ^/XXX[/]?(.*) http://www.example.ac.jp/XXX/$1 [NE,L] # ログイン済み かつ ログインフォーム RewriteCond %{HTTP_COOKIE} __ac= RewriteCond %{QUERY_STRING} came_from=http%3A//www\.example\.ac\.jp[/]?(.*) RewriteRule ^/XXX /XXX/%1? # それ以外 RewriteRule ^/XXX[/]?(.*) http://192.168.2.2:8080/VirtualHostBase/ \\ https/www.example.ac.jp:443/YYY/VirtualHostRoot/_vh_XXX/$1 [L,P]