Nginx
記憶體控制無記憶體,但不在 Nginx 中的子文件夾上
我在 Nginx 中使用這個規則
location ~ /app/(?<code>...)/acme/?(?<uri>.*) { add_header Cache-Control "max-age=0, no-cache, no-store, must-revalidate"; proxy_pass http://int-srv/$code/acme/dev/$uri; }
這添加了我上面在呼叫時編寫的 Cache-control 標頭
/app/abc/acme /app/abc/acme/assets /app/abc/acme/assets/js /app/abc/acme/assets/css /app/abc/acme/anything
我只希望將 Cache-control 標頭應用於 /app/abc/acme,因為當呼叫此端點時,響應是我們 index.html 的內容。我不想記憶體它,它目前執行良好。
如果您正在考慮使用 index.html 制定規則,不幸的是,它不會起作用,因為我沒有看到我們正在直接呼叫文件 (/app/abc/acme/index.html) chrome調試工具
所以基本上這就是我想要的
/app/abc/acme - apply cache-control no-cache,etc header to this location only /app/abc/acme/assets - don't want cache-control header /app/abc/acme/assets/js - don't want cache-control header /app/abc/acme/assets/css - don't want cache-control header /app/abc/acme/anything - - don't want cache-control header
如果你覺得我做的不好,請告訴我。
您可以使用兩個位置,一個匹配較短的 URL。例如:
location ~ ^/app(?<code>/...)/acme/(?<stuff>.*)$ { add_header Cache-Control "max-age=0, no-cache, no-store, must-revalidate"; rewrite ^ $code/acme/dev/$stuff break; proxy_pass http://int-srv; } location ~ ^/app(?<code>/...)/acme$ { rewrite ^ $code/acme/dev break; proxy_pass http://int-srv; }
變數名稱
$uri
已由系統定義,因此您可能應該使用不同的名稱。
proxy_pass
在正則表達式位置內使用帶有指令的 URI 組件顯然有效,但未記錄在案。事實上,文件指出:使用正則表達式指定位置時。在這種情況下,應該指定指令而不使用 URI
所以我的例子使用了
rewrite ... break
。