【发布时间】:2014-07-31 15:44:37
【问题描述】:
我有以下基本 Nginx 配置(在 DigitalOcean droplet 上预装了 Ghost 平台):
server {
listen 80;
server_name xxx.com;
client_max_body_size 10M;
location / {
proxy_pass http://localhost:2368/;
proxy_set_header Host $host;
proxy_buffering off;
}
}
现在我尝试为我的资产设置以下到期标题,但没有成功:
location ~ ^/assets/ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
根据我找到的信息,Nginx 一次只使用一个位置路径,因此必须复制资产位置块内的 proxy_* 参数。如果我只是复制它们,我会得到一个错误(带有 proxy_pass 的正则表达式),可以通过在将 URL 传递给代理之前重写 URL 来解决。我已经对此进行了一些实验,但我也没有让它工作。
有没有人有一个例子来说明当 proxy_pass 存在时如何设置过期标头?我只是希望 xxx.com/assets/ 下的所有文件都有正确的到期日期。
【问题讨论】:
-
你为什么使用正则表达式位置?写
location /assets/ {... -
例如在查询 xxx.com/assets/css/style.css 时使用 /assets/ 会导致 404。 (请注意,我还复制了此位置块内的代理设置。)我确实注意到查询 /assets/ 将导致 HTTP GET 具有正确的到期日期。编辑:根据 Nginx 日志,对 /assets/css/style.css 的所有请求都被重写为 /css/styles.css。因此是 404。