2017-03-23 3 views
1

web2py構成があり、nginx上で動作しています。特定の静的ファイルに対してブラウザキャッシュが実装されていると404エラーが発生します。問題はhereと記載されています。問題に関連している可能性があるため、またはweb2py固有の回避策または解決策が存在する可能性があるため、web2pyのコンテキスト内でこの質問をしています。上記の「場所」句の前または後のいずれかの次の行を追加しブラウザキャッシングがnginx/web2pyで実装されている場合の静的アセットの404エラー

worker_processes 3; 

events { 
    worker_connections 1024; 
} 

http { 
    access_log [/...]; 
    error_log [/...] crit; 

    include mime.types; 
    sendfile on; 

    server { 
     server_name [...] [...]; 
     return 301 [...] $request_uri; 
    } 

    server { 
     listen 127.0.0.1:[...]; 
     root [/...]; 

     location/{ 
      include uwsgi_params; 
      uwsgi_pass [.../uwsgi.sock]; 
     } 
    } 
} 

が問題のパターンに一致する静的ファイルを、提供を停止するサーバーが発生します:

nginx.confは次のようになります

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { 
    expires 1d; 
} 

これはuwsgiの問題である可能性があることが以前のスレッドで示唆されていましたが、問題は他の問題によって引き起こされている可能性があります。 "404"問題を引き起こさずに、ブラウザのキャッシングを実装するにはどうすればよいですか?

+0

'include uwsgi_params;行を追加してみてください。 uwsgi_pass [.../uwsgi.sock]; 'を新しいロケーションブロックに追加します。 –

+0

@リチャードスミス - ありがとう。二重チェックの後、私は合理的にそれがうまくいくと確信しています(ただし、この数時間の間、これを処理した後、私は再び何かをすることを期待しています)。それを答えにしたいのであれば、それは正しいとマークします。 – Boa

答えて

1

動的コンテンツのみを提供しているようです。また、nginxは、ブロックlocationprocess a requestに選択します。完了する必要があります。

location /ブロックのuwsgiの設定は、追加する新しい動的ロケーション全体にわたって複製する必要があります。たとえば:

server { 
    ... 

    include uwsgi_params; 

    location/{ 
     uwsgi_pass [.../uwsgi.sock]; 
    } 
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { 
     expires 1d; 
     uwsgi_pass [.../uwsgi.sock]; 
    } 
} 

おそらく、外側のブロックにinclude文を移動し、(それが唯一のuwsgi_param文を含むと仮定して)その文が継承できるようにすることができます。

+0

私は404エラーのためにブラウザキャッシュを使用しようとしましたが、奇妙なシナリオはほとんど見つかりませんでした。 「testsite.com/testblabla.png」というURLを入力すると、eタグ付きの404応答が表示されます。同じブラウザタブをリフレッシュすると、ブラウザキャッシュを使用していません。同じURLを開いた場合それはブラウザのキャッシュから取得している新しいタブです。それはとても変わっています。また、firefoxはブラウザのキャッシュを404ステータスで使用していません。皆さん、同じ問題に直面している場合は教えてください – anveshtummala

関連する問題