‘Apache’ タグのついている投稿

Apacheでリバースプロキシを使う際のホスト名を引き継ぐ方法

GAEの開発中に、Apache経由のリバースプロキシ環境でdev_appserver.pyを起動させていると、認証関係やself.request.host_urlなどでホスト名を取ろうとした場合にlocalhost:8080などのホスト名を返されます。

ProxyPreserveHost ディレクティブを使えば解決です。ポート番号も消えるみたいです。

mod_proxy – Apache HTTP サーバ
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost On


UbuntuでApache 2.4.6(Event MPM)+PHP 5.4(FastCGI)を使う

環境はAmazon EC2のUbuntu 12.10です。Apache 2.4.6を使ってみます。Apache 2.4系列を使うからには、やっぱりEvent MPMを使いたいところです。

ところがPHPのマニュアルにはPreforkを使えと書いてあります。

PHP: インストール – Manual
http://www.php.net/manual/ja/faq.installation.php#faq.installation.apache2

マルチスレッドMPMを使いたい場合はFastCGIを使うようにも書いてあるので、PHPをFastCGIで動かすようにします。

(さらに…)


mod_rewriteでブラウザの言語別にリダイレクトする

ユーザーがサイトのあるページ(http://sample.com/hoge/)に来た際に、ブラウザの優先言語が日本語の場合はjaページ(http://sample.com/hoge/ja/)、英語やそれ以外の言語の場合はenページ(http://sample.com/hoge/en/)に飛ばす方法のメモ。

やり方は以下のサイトから。

Redirect according to browser language: mod rewrite and HTTP_ACCEPT_LANGUAGE | Michal Borychowski

本来は

RewriteCond %{HTTP_ACCEPT_LANGUAGE}

とか書きたいところを、この変数がApacheに存在しないので、

RewriteCond %{HTTP:Accept-Language}

にするのが肝らしいです。

で、書いてみた.htaccessファイルはこちら。

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{HTTP:Accept-Language} ^ja [NC]
  RewriteRule ^$ /hoge/ja/ [L,R=301]

  RewriteRule ^$ /hoge/en/ [L,R=301]
</IfModule>

FireFox,IE,Chromeで問題なさそうだったのでOK。