我有一個PHP網站,其中一些內容是用戶生成的。例如,用戶可以上傳調整大小並可以請求的照片。我想在我的nginx配置中根據MIME類型(Content-Type
響應標頭)指定Expires
標頭(用於緩存)。根據nginx中的動態內容類型過期標題
這是我目前的配置(我的主機會自動添加http{}
和server{}
):
charset utf-8;
types {
text/css css;
text/javascript js;
}
gzip on;
gzip_types text/html text/css text/javascript application/json image/svg+xml;
location/{
if (!-e $request_filename) {
rewrite . /index.php last;
break;
}
set $expire 0;
if ($upstream_http_content_type = image/jpeg) { set $expire 1; }
if ($upstream_http_content_type = image/png) { set $expire 1; }
if ($upstream_http_content_type = image/gif) { set $expire 1; }
if ($upstream_http_content_type = image/svg+xml) { set $expire 1; }
if ($upstream_http_content_type = text/css) { set $expire 1; }
if ($upstream_http_content_type = text/javascript) { set $expire 1; }
if ($expire = 1) {
expires max;
}
}
這適用於靜態文件(如.png
文件 - 他們得到正確Expires
頭),但它有沒有影響從index.php
動態生成的內容(根本沒有Expires
頭)。有人知道我在做什麼錯嗎?
什麼是動態文件?你的意思是當用戶上傳真實文件(例如圖像)和你的網絡應用程序傳輸它(例如調整大小)並將其發回時,動態文件出現,這是一個動態文件,是嗎? – emka86
@ emka86我改變了問題來澄清那部分。我的意思是由'index.php'動態生成的內容。 – Jonathan
我檢查你的conf截圖,從我的角度來看它是不可能工作的。你沒有任何'root'指令,所以nginx甚至不知道從哪裏開始搜索任何文件。接下來你使用'index.php',但沒有任何'proxy_pass'或'fastcgi_pass'指令將nginx請求重定向到某個PHP應用程序。 Nginx自己不知道如何處理'.php'文件。請檢查一下這兩個:http://kbeezie.com/nginx-configuration-examples/或http://wiki.nginx.org/FullExample – emka86