V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xLzgkddTywk9ALsX
V2EX  ›  问与答

nginx反向代理的问题

  •  
  •   xLzgkddTywk9ALsX · 2013-07-20 14:26:20 +08:00 · 3161 次点击
    这是一个创建于 4146 天前的主题,其中的信息可能已经有所发展或是发生改变。
    反代了一个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;
    }
    11 条回复    1970-01-01 08:00:00 +08:00
    msg7086
        1
    msg7086  
       2013-07-20 15:01:47 +08:00
    expires 2d;

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

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

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

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

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

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

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

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

    如何修改为缓存指定内容? 不好意思了,本人菜鸟
    jylee
        8
    jylee  
       2013-07-21 13:25:22 +08:00   ❤️ 1
    修改這個
    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
        9
    jylee  
       2013-07-21 13:26:08 +08:00
    惨了。。。。暴露了。。。。。。。。。。。。。。。。。。
    xLzgkddTywk9ALsX
        10
    xLzgkddTywk9ALsX  
    OP
       2013-07-21 19:23:50 +08:00
    @jylee 暴露什么?
    xLzgkddTywk9ALsX
        11
    xLzgkddTywk9ALsX  
    OP
       2013-07-21 19:25:25 +08:00
    @jylee 哈哈,去逛了一圈,还不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:54 · PVG 17:54 · LAX 01:54 · JFK 04:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.