2017-02-05 10 views
2

新しいコンテンツが数秒ごとに投稿されるDjango Webサイトがあります。サーバブロック内の特定の場所にNginxプロキシマイクロキャッシュを設定する

私のウェブサイトのホームページの認証されたユーザーは/になりますが、無許可のユーザーは/unauthになります。 /unauthは、/と同様の内容を示しますが、個人的な詳細はありません。私のウェブサイトでは、アップストリームとしてのgunicornでnginx(リバースプロキシ)を使用しています。

私はlocation/unauthnginx microcachingを実装しようとしているが、これまでのところ(何が今まで/var/cache/nginxに表示しない)成功していません。 location/unauthadd_header X-Cache-Status $upstream_cache_status;を追加しても、応答で何も返されません。これは、loctionブロックが完全に無視されるようなものです(!)。

このトラブルシューティングを手伝ってもらえますか?あなたがnginx.conf全体を見たいと思ったら私に教えてください。


私はnginxの設定ファイルに以下を追加しました:次のようにhttp://example.com/unauth/から生成されたHTTPレスポンスヘッダがある

#outside the server block 
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=6m; 

    #inside the server block 
    location /unauth { 
     add_header X-Cache-Status $upstream_cache_status; 
     proxy_cache my_cache; 
     proxy_cache_lock on; 
     proxy_cache_valid 200 1s; 
     proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; 

     proxy_buffering on; 
     proxy_buffers 24 4k; 
     proxy_buffer_size 2k; 
     proxy_busy_buffers_size 8k; 

     try_files $uri @http_proxy_to_app; 
    } 

Status:    HTTP/1.1 200 OK 
Server:    nginx 
Date:    Sun, 05 Feb 2017 00:10:03 GMT 
Content-Type:  text/html; charset=utf-8  
Transfer-Encoding: chunked 
Connection:   close 
Vary:    Accept-Encoding 
Expires:   Sun, 05 Feb 2017 00:10:13 GMT 
Vary:    Cookie 
Last-Modified:  Sun, 05 Feb 2017 00:10:03 GMT 
Cache-Control:  max-age=10 
X-Frame-Options: SAMEORIGIN 
Content-Encoding: gzip 
+0

ロケーションブロックに 'add_header X-Cache-Status $ upstream_cache_status;'を追加してリクエストを再実行できますか?これは、リクエストがキャッシュにヒットしなかったかどうかに関する情報を提供します。 –

+1

www-data:www-dataに変更してみてください。 @http_proxy_to_appへの内部リダイレクトを行っているためかもしれません。テストとして、代わりにそのブロックにキャッシュ設定を追加できますか? –

答えて

1

キャッシュはwasn理由@http_proxy_to_appへの内部リダイレクトが原因でした。 proxy_cacheは、ポストリダイレクトコンテキスト内にある必要があります。

+0

迅速な説明。 uriに引数やパラメータが含まれている場合(例えば、 'http://example.com/unauth/?page = 2#section18')、nginx.confのlocationブロックとlocation/unauthは同様のURIを取得しますか? –

関連する問題