2017-02-05 88 views
2

我有一個Django網站,每隔幾秒發佈一個新內容。配置服務器塊內的特定位置的Nginx代理微庫緩存

我網站主頁上的授權用戶登陸/,而未經授權的用戶登錄/unauth/unauth顯示與/類似的內容,但沒有任何個人詳細信息。我的網站使用nginx(反向代理)和gunicorn作爲上游。

我試圖在location/unauth上實現nginx microcaching,但迄今爲止一直不成功(在/var/cache/nginx中沒有任何顯示)。在location/unauth中添加add_header X-Cache-Status $upstream_cache_status;在響應中根本不產生任何內容。這幾乎就像完全忽略了(lo)塊。

你能幫我解決這個問題嗎?如果您想查看整個nginx.conf,請告訴我。


我已經添加在我的nginx的配置文件中的以下內容:

#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; 
    } 

http://example.com/unauth/正在生產的HTTP響應報頭如下:

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/unauth」是否會捕獲這樣的uri? –

相關問題