server {
listen 80;
server_name ~^(?<cc>.+?).local.solar.bc.digital$;
client_max_body_size 1m;
root /home/vagrant/sites/$cc/_www/;
index index.html index.htm index.php;
error_page 404 /index.php;
access_log /var/log/nginx/$cc-access.log;
error_log /var/log/nginx/$cc-error.log;
charset utf-8;
sendfile off;
location/{
root /home/vagrant/sites/$cc/_www/php/;
try_files $uri $uri/ /index.php?$query_string;
}
location /shop/ {
# root /home/vagrant/sites/$cc/_www/bcshop/;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param APP_ENV dev;
fastcgi_param PLATFORM_ENVIRONMENT local;
fastcgi_read_timeout 300;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~ /\.ht {
deny all;
}
}
右は上記の設定を指定します。私がしようとしていることが分かっているなら、それが機能していないことをご存じですか?それぞれ独自のルートを持つNginx複数の場所
いくつかの詳細:
- 私はエラーが出ずにいるので、私は、一般的な 'ルート' を持っています。
- これは開発用のローカルVM上にあります。我々は、各プロジェクト(上記の設定の$ cc変数を参照)ごとに、最大2つのアプリケーションをデプロイできる配備ツールをローカルに持っています。それぞれのプロジェクトごとに必ずしも両方が配備されるとは限りません。最初のアプリは
/home/vagrant/sites/$cc/_www/php
に配備され、2番目のアプリは/home/vagrant/sites/$cc/_www/bcshop
に設定されています(ただし、私はshop
に設定することができます)。 - 両方のアプリが両方とも同じように動作します。私は単にそれらを働かせることはできません。私は、私が試した小さな変形のほとんどで、両方のファイルが見つかりません。
- 私は
/home/vagrant/sites/$cc/_www/shop
(/home/vagrant/sites/$cc/_www/bcshop
ではなく)に2番目のアプリを置くと、そのホームページを読み込むことができますが、それ以外は何も表示されません。 - 2番目のアプリを無視して最初のアプリに集中すると、一般ルートを
/home/vagrant/sites/$cc/_www/php
に設定し、ローカルルートを/
から削除することができます。それは動作します。しかし、それがローカルルートとして指定されていないときは。この場合、実際には、ログに次のエラーが表示されます。「FastCGIがstderrで送信されました:「上流の応答ヘッダーを読み取っている間にプライマリスクリプトが不明です」。これは、最初のアプリのみ。 - 一般的なルートがその値に設定されている理由がわからないのであれば、一般的なルートが一致する場所に対して検証できない場合、ログにエラーが発生するからです。意味がありますか?
私は、私が要約したことのほとんどすべてをカバーしていると思います。
思考?
私はnginxの専門家ではないので、私は試してみることにしました。しかし、これまでのところ、喜びはありません。
ありがとうございます。
あなた*グローバル・ルートは、 '$のrequest_filename'を解決するために、'場所〜\の.php $ 'で使用されます。私はまだPHPファイルに '/ home/vagrant/sites/$ cc/_www'を使用し、それ以外には'/home/vagrant/sites/$ cc/_www/php'を使用する理由を理解できません。 –
@リチャードスミスそれは良い点です。私は自分自身を疑っていましたが、一般的なルートに存在のテストに失敗しないようにするという問題を回避する方法はわかりません( 'test '/ home/vagrant/sites/shop/_www/php第2の場所( '/ shop')にマッチするときは「存在しません。 私は 'location〜\ .php $'の両方の場所でPHPを処理したいと思います。可能? '/ home/vagrant/sites/$ cc/_www/php'の最初の場所と/ home/vagrant/sites/$ cc/_www/bcshop'に一致する場合、' 'location〜\ .php $'のルートは '' home /それが第2のものと一致するとき。どうやって? –