2017-01-18 8 views
8

Nginxの設定に問題があります。私はsymfony3で2台のサーバを持っています.1台はnginx、もう1台はwebAppです。ここ は私の設定です:symfony3を使ってリモート静的ファイルを処理する

location /portal/mysite/ { 

    set $frontRoot /srv/data/apps/mysite-portal-stag/current/web; 
    set $sfApp app.php; # Change to app.php for prod or app_dev.php for dev 

    root /srv/data/apps/mysite-portal-stag/current/web; 

    rewrite ^/portal/mysite/(.*)$ /$1 break; 
    try_files $uri @sfFront; 

} 
location @sfFront { 

    root /srv/data/apps/mysite-portal-stag/current/web; 

    fastcgi_pass myserver:myport; 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $frontRoot/$sfApp; 

    fastcgi_param SCRIPT_NAME /portal/mysite/$sfApp; 

} 

すべてのPHPスクリプトのためのウェブサイトの作業が、すべての資産(静的ファイル)が壊れたファイルです。私はNginxがどのように静的なファイルであるかを示し、スクリプトにはないということを私のプロキシに「伝える」方法を十分に理解していません。私はここに、誰もがよりよい解決策を見つけるまで、非常に醜い解決策を見つける必要があり

+0

'include fastcgi_params'を' include fastcgi.conf'に変更し、あなたが設定した 'fastcgi_param'を削除してみてください。代わりに、 'fastcgi_split_path_info ^(。+ \。php)(/.*)$;'を追加してください。私の意見では、渡しているパスが間違っている可能性があるため、部分的に動作しています。私はリバースプロキシを使用して 'php-fpm'と' nginx'を持っており、うまく動作します。 – tftd

+0

@JeanDoux、私はあなたが私の答えを見つけるのを助け、賞金交渉の一部を保つことを望みます。そうでなければ、何かが不明であれば私に知らせてください。残っているドットがあればそれを接続してもよろしいです。 – cnst

答えて

7

try_filesディレクティブは自動的に静的ファイルを検索し、あきらめる前に静的ファイルとして提供し、要求をスクリプトとして提供します。

  • http://nginx.org/r/try_files

    をチェックし、ファイルの存在指定した順序で、要求の処理のために最初に見つかったファイルを使用しています。処理は現在のコンテキストで実行されます。ファイルへのパスは、ルートおよび別名ディレクティブに従ってfileパラメータから作成されます。名前の末尾にスラッシュを指定することで、ディレクトリの存在を確認することができます。 "$ uri /"いずれのファイルも見つからなかった場合は、最後のパラメータで指定されたURIへの内部リダイレクトが行われます。

注すでにtry_filesを使用しているものの、おそらくあなたのパスの処理が仕様にアップしていないように見えること。一時的な解決策、there's nothing wrong with using a rewrite or twoとあなた自身の答えについては


、しかし、あなたはaliasディレクティブの恩恵を受けるだろうようとは言う、それが見えます。

あなたが/tmp外のものを提供している理由をただし、あなたが説明したことがありません。 /tmpは、多くの場合、一部のcronスクリプトによって自動的に消去されます。OpenBSDの場合、/etc/dailyスクリプトは自動的にfindとなり、約7日以上経過したファイルは削除されます(名前が示すようにon a daily basis)。要約で


には、最初のファイルシステムとファイルシステムのWebビューの間で適切なマッピングであるかを把握する必要があります。

その後、プレフィックスが見つかった場合は、アセットに別のlocationと一緒にaliasを使用してください。

これ以外の場合は、try_filesが意図したとおりに動作するためのパスを見つけてください。

1

は、私がやっていることです:

  • 私はすべての資産リポジトリをコピーし、nginxのは私のプロキシサーバーにそれをコピーしています。

は、ここに私の新しい設定です:

location /portal/mysite/ { 

    set $frontRoot /srv/data/apps/mysite-portal-stag/current/web; 
    set $sfApp app.php; 

    root /srv/data/apps/mysite-portal-stag/current/web; 

    rewrite ^/portal/mysite/(.*)$ /$1 break; 
    try_files $uri @sfFront; 

} 
location /portal/mysite/asset { 
    root /tmp/mysite/asset; 
    rewrite ^/portal/mysite/asset/(.*)$ /$1 break; 
} 
location @sfFront { 

    set $frontRootWeb /srv/data/apps/mysite-portal-stag/current/web; 
    root /srv/data/apps/mysite-portal-stag/current/web; 

    fastcgi_pass myAdressWeb:myPort; 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $frontRoot/$sfApp; 

    fastcgi_param SCRIPT_NAME /portal/mysite/$sfApp; 

} 

そして今、それが働いている、すべてのJS/CSSと画像が発見されました。

誰かが「よりクリーン」な答えを考えると、彼は答えを歓迎する以上のものです。

関連する問題