Apacheと朔を組み合わせて使う方法
2005-11-25, 2007-01-05, 2025-02-13
Apacheのリバースプロキシ機能を使って、 朔のゲートウェイのURIからポート番号を消してかっこよくします。 RSSを静的生成するので負荷を低くする効果も期待できます。
この例ではDNS名が bbs.shingetsu.info 、 Apacheでのドキュメントルートが /srv/www/shingetsu です。 LAN上のIPアドレスは 192.168.1.2 です。
朔では server_name 等を設定してください。
[Gateway] server_name: bbs.shingetsu.info proxy_destination: 192.168.1.2:8000 [Path] apache_docroot: /srv/www/shingetsu
Apacheの設定
プロキシモジュールとリライトモジュールを読み込みます:
LoadModule cache_module /usr/lib/apache2/modules/mod_cache.so LoadModule disk_cache_module /usr/lib/apache2/modules/mod_disk_cache.so LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
プロキシとリライトの設定はこんな感じ:
<VirtualHost *> ServerAdmin webmaster@shingetsu.info DocumentRoot /srv/www/shingetsu ServerName bbs.shingetsu.info ServerAlias bbs.shingetsu.info ErrorLog /var/log/apache2/shingetsu.error.log CustomLog /var/log/apache2/shingetsu.access.log combined RewriteMap escape int:escape <Directory "/"> <Limit POST> Include /etc/apache2/acl </Limit> </Directory> <Directory "/srv/www/shingetsu"> Options -Indexes -ExecCGI AddType text/xml;charset=UTF-8 .rdf RewriteEngine on RewriteRule gateway.cgi/rss rss.rdf RewriteRule server.cgi - [F] RewriteRule ^([^/]*).js$ /STATIC/$1.js RewriteRule ^([^/]*).css$ /STATIC/$1.css RewriteRule favicon.ico /STATIC/favicon.ico RewriteRule rss1.xsl /STATIC/rss1.xsl RewriteRule ^thread.cgi/(thread_[0-9A-F]*)/([0-9a-f]*)/([0-9]*).(.*) \ /CACHE/$1/attach/$3_$2.$4 <IfModule mod_proxy.c> RewriteRule gateway.cgi(.*) \ http://192.168.1.2:8000/gateway.cgi${escape:$1} [P,NE] RewriteRule thread.cgi(.*) \ http://192.168.1.2:8000/thread.cgi${escape:$1} [P,NE] </IfModule> </Directory> Alias /STATIC/ /usr/local/share/saku/www/ <Directory "/usr/local/share/saku/www"> Options -Indexes -ExecCGI </Directory> Alias /CACHE/ /var/local/spool/saku/ <Directory "/var/local/spool/saku/"> Options -Indexes -ExecCGI </Directory> </VirtualHost> <VirtualHost *> ServerAdmin webmaster@shingetsu.info DocumentRoot /srv/www/shingetsu ServerName node.shingetsu.info <Directory /> RedirectMatch ^/$ http://shingetsu.info/ </Directory> </VirtualHost>
さらに詳しいサンプルはこちら。
この例ではbbs.shingetsu.infoへのアクセスを朔に飛ばします。 ただしRSSは飛ばしません。 server.cgiは見せません。
aclというのは次のようなファイルです。 Spamを送ってくる相手を手作業でブラックリストに入れます。
Order Allow,Deny Allow from All Deny from 10.0.0.0/8 Deny from 192.168.0.0/16
これらの設定例は朔の2.0.0以降に同梱されています。
RSSとサイトマップの静的生成
朔の2.0.0以降に同梱されている mkrss.pyをcronで定期的(1時間に1回くらい)に動かします。 デフォルトでは /usr/local/lib/saku/mkrss にインストールされます。
server.cgiをApacheと組み合わせるときの設定
こちらはbbs.shingetsu.infoでは設定していないので正確なことはわかりませんが、 以下の設定を用意しています。
[Network] dnsname: bbs.shingetsu.info use_x_forwarded_for: yes
X-FORWARDED-FOR を有効にするので、 リバースプロキシ以外から直接繋がらないように設定してください。