Nginx
nginx“fastcgi_cache_valid 404”不工作
我正在用 nginx 做簡單的記憶體。它適用於 200 個響應,但 404 個響應由於某種原因沒有“命中”記憶體邏輯,我不明白為什麼。
我所說的“沒有命中記憶體邏輯”是基於我的
add_header X-Cached
. 如果是 404 響應,則根本不會出現此標頭。404 響應:
< HTTP/1.1 404 Not Found < Server: nginx < Date: Mon, 05 Dec 2016 09:54:34 GMT < Content-Type: application/json < Content-Length: 55 < Connection: keep-alive < Expires: Thu, 19 Nov 1981 08:52:00 GMT < Cache-Control: no-store, no-cache, must-revalidate < Pragma: no-cache
200 回复:
< HTTP/1.1 200 OK < Server: nginx < Date: Mon, 05 Dec 2016 09:54:56 GMT < Content-Type: application/json < Content-Length: 1186 < Connection: keep-alive < Set-Cookie: PHPSESSID=5hq364dphuo8ka26sbcadiak74; path=/ < Expires: Thu, 19 Nov 1981 08:52:00 GMT < Cache-Control: no-store, no-cache, must-revalidate < Pragma: no-cache < X-Cached: MISS
相關的nginx配置:
location / { try_files $uri /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_cache_key $request_uri?$is_args$args; fastcgi_cache CACHENAME; fastcgi_cache_valid 200 90d; fastcgi_cache_valid 404 365d; fastcgi_cache_use_stale updating error timeout invalid_header http_404 http_500; fastcgi_cache_methods GET HEAD; fastcgi_ignore_headers Cache-Control Set-Cookie Expires X-Accel-Expires Vary; add_header X-Cached $upstream_cache_status; }
我的應用程序是一個 REST API,所以 404 的響應只是說路由返回了錯誤的響應。我希望記憶體此響應。
我究竟做錯了什麼?感謝您的任何想法!
Alexey 提到我的指令缺少
always
標誌。add_header
add_header
*如果響應程式碼等於 200、201、204、206、301、302、303、304 或 307,*則將指定欄位添加到響應標頭。當我的應用程序響應 404 時,它仍然正確地訪問了 nginx 的記憶體,但結果從未發送 add_header。