好吧,我有这样的site.conf文件:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_path /etc/nginx/cache/pag levels=1:2 keys_zone=APP:100m inactive=1m;
proxy_temp_path /etc/nginx/cache/tmp;
add_header X-Cache $upstream_cache_status;
server {
listen 80;
root /etc/nginx/html;
index index.html index.htm;
server_name www.example.com;
error_page 404 /404.html;
location /404.html {
internal;
}
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_cache APP;
proxy_cache_valid 200 1m;
proxy_cache_methods POST;
expires 1m;
}
}
使用此配置,所有内容(包括POST请求方法)都会缓存1分钟,确定。
我需要什么?我需要只有这些页面可以缓存:
1) www.example.com
2) www.example.com/index.html
3) www.example.com/test/page.html
4) www.example.com/test/text.txt (this is a file requested by POST thru page.html, and i need it cached also)
5) www.example.com/test/page2.php?var1=val1&var2=val2 (val1 and val2 are dynamics)
我的问题是:我需要在location /
中添加哪些内容才能匹配1-5项内容?像这样:
location (1-5 items match) {
proxy_pass http://127.0.0.1:8080/;
proxy_cache APP;
proxy_cache_valid 200 1m;
proxy_cache_methods POST;
expires 1m;
}
其他页面(未缓存)将自动重定向到127.0.0.1:8080。我知道这可以这样做:
location / {
proxy_pass http://127.0.0.1:8080/;
}
注意1:其他PHP页面接收POST | GET请求方法,但我不需要它在缓存中,只在上面。
注意:2 127.0.0.1:8080
是运行PHP的apache服务器,因此我可以请求PHP页面。
答案 0 :(得分:0)
由于apache在同一主机上运行,只需提供您不希望通过nginx缓存的html文件。至于php页面,在你的应用程序中发送正确的过期标题,一切都会正常工作。