Home‎ > ‎ProgramTool‎ > ‎

Apache

http://httpd.apache.org/
いわずとしれた、HTTPServerである。

100514_11_35
Snow Leopard になって、またディレクトリが変わってる
httpd.confは  /private/etc/apache2/
で、ログの吐き出し先も /private/var/log/apache2/ になっている。

090409_10_34
Leopard になってから、port のapache2より元から入っているのを使うことが多くなった。
どっちでもいいっちゃ、いいのだが。

httpd.confは  /private/etc/httpd/ に入っている。

で、ちょっとテストの都合上、リバースプロキシが必要になったので、設定してみた。
なにがしたいかというと、
test.yyy.jp というテストサーバに配置されているものを
xxx.jpにホストされているように、ブラウザにみせたい。

まず、

LoadModule proxy_module       libexec/httpd/libproxy.so
AddModule mod_proxy.c

このあたりのコメントアウトを外して、

<VirtualHost _default_>
 ErrorLog "/private/var/log/httpd/error_log_rp.log"
 CustomLog "/private/var/log/httpd/access_log_rp.log" common
    ProxyPass / http://test.yyy.jp/
    ProxyPassReverse / http://test.yyy.jp/
</VirtualHost>

http://localhost/ とかで、 http://test.yyy.jp/ が見えてればオッケ。

後、hosts ファイルに

127.0.0.1    xxx.jp

としておく。

すると、 http://xxx.jp/ とブラウザのアドレスバーに入れると、そのアドレスで http://test.yyy.jp/ が見えるというわけ。
以前は、netinfoを通さないと、hostsの設定が有効にならなかったのだが、
Leopardになってからなのか、hostsを書き換えればその場で反映されるようになったみたい。


mod_rewrite

社内サーバの名称を 6f-48 > wallaby に変えたわけだけど、設定ファイルを全部いじくるのは面倒くさい。
でも、ほっとくと、きっとみんな 6f-48で使い続けるだろうな。
ということで、6f-48にアクセスしたら wallabyにとばすように設定することにした。

<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteCond %{HTTP_HOST}  ^6f-48.xxxx.co.jp:8800$
     RewriteRule ^/(.*) http://wallaby.xxxx.co.jp:8800/$1 [R=301,L]
</IfModule>

http://cubic9.com/Linux/Apache/%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB/
サイト移転って話しの時も、SEO対策的だったり、外部からの既存リンク対策的に、結構重要だったりする。
[R=301]は、この場合不要だけど、別についてても問題ないはず。

ところが、ここでひっかかった。pukiwikiはUTF-8に設定していて、モダンブラウザでみるとURLが日本語化されて読みやすく+短くなるのだけど、6f-48 の方からアクセスすると新しいページの編集画面に飛んでしまう。
あらかじめ、wallabyからアクセスする場合は問題ない。

で、同僚に相談したところ、解決しました。
URLエンコードされた内容が、更にエンコードされているためなので、NEってオプションつければいけるらしい。
http://httpd.apache.org/docs/2.0/ja/mod/mod_rewrite.html
noescape|NE で引いたとこに書いてある。

RewriteRule ^/(.*) http://wallaby.imjp.co.jp:8800/$1 [R=301,L,NE]

ということで、いけました。
Comments