nginx反向代理的问题

2013-07-20 14:26:20 +08:00
 xLzgkddTywk9ALsX
反代了一个wordpress, 源站是LNMP, 代理站是NGINX.

问题是源站更新以后, 代理站不更新,访问的首页仍然是昨天的内容. 后台可以登陆,但是cookies好像没有保存,回到前台还是未登陆的状态,这是什么原因?


###

proxy_temp_path /home/proxy_temp_dir;
proxy_cache_path /home/proxy_cache_dir levels=1:2 keys_zone=cache_one:500m inactive=30d max_size=30g;
client_body_buffer_size 512k;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_cache cache_one;

server {
listen 80;
server_name www.xxx.com;
location /
{
proxy_pass http://weihost;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_cache_valid 200 304 12h;
expires 2d;
}

location ~ /purge(/.*)
{
allow 127.0.0.1;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}

location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://weihost;
}
access_log off;
}
3096 次点击
所在节点    问与答
11 条回复
msg7086
2013-07-20 15:01:47 +08:00
expires 2d;

2天过期
jylee
2013-07-20 15:53:03 +08:00
proxy_cache_valid 200 304 12h;

过期时间12小时,你可以手动清空缓存 rm -rf /home/proxy_cache_dir/*

也可以让他发布内容之后PHP访问前端自动清空缓存。

内容改变不频繁的话还是手动清空吧-。-
xLzgkddTywk9ALsX
2013-07-20 18:57:35 +08:00
@jylee wordpress 反代这里已经设置了PHP文件不缓存,为什么还会缓存到页面?

我现在的情况是代理服务器是计流量的,像你这样说的手动清除会把所有缓存清理掉,浪费大量流量.
xLzgkddTywk9ALsX
2013-07-20 18:59:47 +08:00
@jylee 特别是大量图片缓存,如果这样清理,会很伤神啊
xLzgkddTywk9ALsX
2013-07-20 19:18:26 +08:00
另外,为什么无法传递cookies, 源站一切正常, 反代也可以登陆,但是访问反代登陆后,回到前台,仍然是未登陆的状态
jylee
2013-07-21 09:20:49 +08:00
@buobuk

我没理解错的话,应该是你后端用了伪静态吧?后缀不是.php都会被缓存的。

在你登录之前访问过首页,把首页缓存了,你登录后当然还是未登录状态- -如果你登录之前没访问过首页,登录之后访问了,那别人访问的时候看到的是你的登录状态了

应该单独开一个location,缓存图片、CSS之类的。然后location / 的缓存去掉,貌似也没必要分一个location ~ .*\.php
xLzgkddTywk9ALsX
2013-07-21 12:44:01 +08:00
@jylee 是修改这一句吗? location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$

如何修改为缓存指定内容? 不好意思了,本人菜鸟
jylee
2013-07-21 13:25:22 +08:00
修改這個
location /
{
proxy_pass http://weihost;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
expires 2d;
}

然后加一段

location ~ \.(gif|jpg|png|css|jpeg|js)$ {
proxy_set_header Host jybb.me;
proxy_pass http://xxxxxxxxxxxx;
proxy_cache_valid 200 3d; ##缓存时间
expires 6h;
}
jylee
2013-07-21 13:26:08 +08:00
惨了。。。。暴露了。。。。。。。。。。。。。。。。。。
xLzgkddTywk9ALsX
2013-07-21 19:23:50 +08:00
@jylee 暴露什么?
xLzgkddTywk9ALsX
2013-07-21 19:25:25 +08:00
@jylee 哈哈,去逛了一圈,还不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/76401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX