Nginx 配置静态文件缓存头

Nginx 配置静态文件缓存头

我使用 Nginx 作为静态文件的前端服务器,位于 Apache 前面。

  1. 我怎样才能合并两个相似的位置块以避免重复?(位置〜.php $位置@apache
  2. 我需要为静态文件添加缓存头,但当前位置(注释掉)不起作用

配置如下:

server {
    listen 80 default_server;

    server_name example.com

    root /home/.../public_html;
    index index.php index.html;

    location ~ \.php$ {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass_header Server;
    proxy_pass http://127.0.0.1:8080;
    client_max_body_size 128M;
    }

#    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|ttf|eot)$ {
#   expires 1y;
#    }

    location / {
    try_files $uri @apache;
    }

    location @apache {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass_header Server;
    proxy_pass http://127.0.0.1:8080;
    client_max_body_size 128M;
    }

    location ~ /\.ht {
    deny all;
    }
}

答案1

使用 include 指令从单独的文件中提取位置块的内容。

在您的示例中,创建一个包含(例如名为“/etc/nginx/myproxy.inc”)的文件

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass_header Server;
proxy_pass http://127.0.0.1:8080;
client_max_body_size 128M;

然后像这样更改你的块:

location ~ \.php$ {
    include /etc/nginx/myproxy.inc
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|ttf|eot)$ {
    try_files $uri @apache;
    expires 1y;
}

location / {
    try_files $uri @apache;
}

location @apache {
    include /etc/nginx/myproxy.inc
}

相关内容