proxyを使用してnginx aliasがPHPを実行できないなどのfastcgi問題を解決する
nginx下のaliasは静的ファイルのみのためにサービスされているようで、FastCGI、例えばPHPなどに対しては常にエラーが発生し、典型的には404である.
これに対して、ネット上には次のようなソリューションがあります.
http://u.odo.com.cn/space-2-do-blog-id-3087.html
このような設定は、ルートディレクトリにプログラムがない場合やrewriteが不要な場合など、アプリケーションが比較的簡単に使用できます.
実際のアプリケーションでは、ポピュラーなシングル・エントリ・プログラムがindex.phpに存在しないファイル・アクセスを渡す必要があるなど、比較的複雑な構成が必要になります.これにより、競合が発生し、アクセス・エラーが発生します.また、このような構成は、将来の拡張にメンテナンスリスクをもたらします.
最近私もこの問題に遭遇して、googleに聞いても適切な答えが見つからなかったので、そのために私は何を逆行して、1つのvhostを複数に分割して、ルートディレクトリからproxyエージェントで解決して、以下のように配置したいと思っています.
クリップボードに内容をコピー
コード:
locationの^~は、このパスに一致した後、location/を含む他のlocation構成を無視することを意味する.これにより、rewriteまたはその他の構成はこれに影響しません.
ここまで面倒なのに、なぜ仮想ホストを直接使用せずに、逆エージェントに何度も要求するのかという質問があるかもしれません.
これは、AJAX、javascript、cookieなど、ドメイン間では扱いにくい、URLの前方互換性など、多くの可能性があります.
これに対して、ネット上には次のようなソリューションがあります.
http://u.odo.com.cn/space-2-do-blog-id-3087.html
このような設定は、ルートディレクトリにプログラムがない場合やrewriteが不要な場合など、アプリケーションが比較的簡単に使用できます.
実際のアプリケーションでは、ポピュラーなシングル・エントリ・プログラムがindex.phpに存在しないファイル・アクセスを渡す必要があるなど、比較的複雑な構成が必要になります.これにより、競合が発生し、アクセス・エラーが発生します.また、このような構成は、将来の拡張にメンテナンスリスクをもたらします.
最近私もこの問題に遭遇して、googleに聞いても適切な答えが見つからなかったので、そのために私は何を逆行して、1つのvhostを複数に分割して、ルートディレクトリからproxyエージェントで解決して、以下のように配置したいと思っています.
クリップボードに内容をコピー
コード:
location ^~ /bbs {
alias /srv/www/bbs;
proxy_set_header Host bbs.xxx.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1;
}
locationの^~は、このパスに一致した後、location/を含む他のlocation構成を無視することを意味する.これにより、rewriteまたはその他の構成はこれに影響しません.
ここまで面倒なのに、なぜ仮想ホストを直接使用せずに、逆エージェントに何度も要求するのかという質問があるかもしれません.
これは、AJAX、javascript、cookieなど、ドメイン間では扱いにくい、URLの前方互換性など、多くの可能性があります.