Zend Framework2を使用するサイトをApacheからNginxに移動したいと思います。問題は、サイトに6つのモジュールがあり、Apacheがhttpd-vhosts.confで定義されたエイリアスによってそれを処理することです。
#httpd-vhosts.conf
<VirtualHost _default_:443>
ServerName localhost:443
Alias /develop/cpanel "C:/webapps/develop/mil_catele_cp/public"
Alias /develop/docs/tech "C:/webapps/develop/mil_catele_tech_docs/public"
Alias /develop/docs "C:/webapps/develop/mil_catele_docs/public"
Alias /develop/auth "C:/webapps/develop/mil_catele_auth/public"
Alias /develop "C:/webapps/develop/mil_web_dicom_viewer/public"
DocumentRoot "C:/webapps/mil_catele_homepage"
</VirtualHost>
httpd.confでは、DocumentRootはC:/ webappsに設定されています。サイトは、たとえばlocalhost/develop/cpanel
で利用できます。フレームワークはそれ以上のルーティングを処理します。
Nginxでは、サーバーブロックでroot C:/webapps/develop/mil_catele_tech_docs/public;
を指定することで、1つのサイトのみを使用可能にすることができました。これは、docsモジュールが他のモジュールのように認証に依存せず、サイトがlocalhost/
にあったためにのみ機能します。
次の試みでは:
root C:/webapps;
location /develop/auth {
root C:/webapps/develop/mil_catele_auth/public;
try_files $uri $uri/ /develop/mil_catele_auth/public/index.php$is_args$args;
}
localhost/develop/cpanel
と入力すると、index.phpが修正されますが、リソース(css、jsファイル)が見つかりません。なぜブラウザのGETリクエストの参照パスがApacheの場合と同じようにhttps://localhost/css/bootstrap.css
フォームhttps://localhost/develop/auth/css/bootstrap.css
に変更されたのかわかりません。このルートディレクティブは機能していないようです。
NginxはfastCGIを使用してphpを処理します
location ~ \.(php|phtml)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param APPLICATION_ENV production;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
私は一日中グーグルで検索しましたが、何も役に立ちませんでした。誰かがこの構成をApacheのように機能させるのを手伝ってもらえますか?
root
ブロック内でlocation
ディレクティブを使用しないでください。
これを試して:
location /develop/auth {
alias C:/webapps/develop/mil_catele_auth/public;
try_files $uri $uri/ /index.php$is_args$args;
}
この構成では、URLは次のように機能します。
http://example.com/develop/auth/image.png
-> C:/webapps/develop/mil_catele_auth/public/image.png
root
の代わりにalias
を使用すると、次のようになります。
C:/webapps/develop/mil_catele_auth/public/develop/auth/image.png
代わりに。
そして、いくつかの存在しないファイル/ディレクトリの場合:
http://example.com/develop/auth/not-existing
-> C:/webapps/develop/mil_catele_auth/public/index.php
が実行されます。
これがあなたが望むように機能することを願っています。