我使用 Nginx 作为静态文件的前端服务器,位于 Apache 前面。
- 我怎样才能合并两个相似的位置块以避免重复?(位置〜.php $和位置@apache)
- 我需要为静态文件添加缓存头,但当前位置(注释掉)不起作用
配置如下:
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
}