› NGINX
› NGINX Trac
› 3rd Party Modules
› Security Advisories
› CHANGES
› OpenResty
› ngx_lua
› Tengine
在线学习资源
› NGINX 开发从入门到精通
NGINX Modules
› ngx_echo
dcd
V2EX  ›  NGINX

求助:关于使用 FastCGI 缓存 WordPress 的问题

  •  
  •   dcd · Oct 14, 2016 · 4647 views
  •   You need to sign in to view this topic
    This topic created in 3644 days ago, the information mentioned may be changed or developed.

    WordPress 安装了一个 WPTouch 插件,同一个网址,当移动设备和 PC 访问的时候会显示不同的页面。

    Nginx 启用了 FastCGI 缓存,根据 UA 生成不同的缓存文件。

    现在的问题是,当 A 手机访问的时候会生成缓存文件 A , B 手机访问的时候会生成缓存文件 B ;而我希望所有的移动设备只生成一个缓存文件 A , PC 端访问生成文件 B 。

    Nginx 配置如下:

    fastcgi_cache_path /home/www/wp-content/cache levels=1:2 keys_zone=WORDPRESS:250m inactive=7d max_size=1G;
    #fastcgi_temp_path /home/www/wp-content/temp;
    fastcgi_cache_key "$scheme$request_method$host$request_uri$mobile_request";
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
     
    server {
        listen 80;
        server_name abc.com;
        index index.html index.htm index.php;
        root  /home/www;
       
        set $skip_cache 0;
        set $mobile_request 0;
        if ($http_user_agent ~* '(iPhone|iPod|incognito|webmate|Android|dream|CUPCAKE|froyo|BlackBerry|webOS|s8000|bada|IEMobile|Googlebot\-Mobile|AdsBot\-Google)') {
            set $mobile_request 1;
        }
        if ($request_method = POST) {
            set $skip_cache 1;
        }   
        if ($query_string != "") {
            set $skip_cache 1;
        }   
        if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
            set $skip_cache 1;
        } 
    
        if ($http_cookie ~* "wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
            set $skip_cache 1;
        }  
    
        location / {
            try_files $uri $uri/ /index.php?$args;
            rewrite /wp-admin$ $scheme://$host$uri/ permanent;
        }
    
        location ~ [^/]\.php(/|$) {
            try_files $uri =404;
            fastcgi_pass unix:/dev/shm/php-fpm.sock;
            #fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
            fastcgi_cache_bypass $skip_cache;
            fastcgi_no_cache $skip_cache;
            fastcgi_cache WORDPRESS;
            fastcgi_cache_valid 200 301 302 7d;
            add_header X-UA-Detect $scheme$request_method$host$request_uri$mobile_request;
            add_header X-Frame-Options deny;
            add_header X-Content-Type-Options nosniff;
            add_header X-Cache "$upstream_cache_status From $host";
        }
    
        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
            access_log off; log_not_found off; expires max;
        }
    
        location ~ /\. { deny all; access_log off; log_not_found off; }
        location = /robots.txt { access_log off; log_not_found off; }
        access_log /home/www/wp-content/logs/access.log;
        error_log /home/www/wp-content/logs/error.log;
    }
    

    求各位大能帮忙看看该如何配置,感激不尽!

    8 replies  •  2016-10-15 00:25:17 +08:00
    allenhu
        1
    allenhu  
       Oct 14, 2016 via Android
    你不累吗?我只用了 supercache
    dcd
        2
    dcd  
    OP
       Oct 14, 2016
    @allenhu 嘿嘿,不折腾成功誓不罢休!
    qwer1234asdf
        3
    qwer1234asdf  
       Oct 14, 2016
    我啥 cache 也没用。。
    qwer1234asdf
        4
    qwer1234asdf  
       Oct 14, 2016
    顺便说下,一个插件也没装。。。
    Technetiumer
        5
    Technetiumer  
       Oct 14, 2016
    拿 CDN 缓存整个网站,包括 HTML ,不是更好

    CloudFlare 设置页面规则缓存全部,包括 HTML 和 Ajax 请求,把 CloudFlare 当服务器,然而大陆访问 CloudFlare 并不快,如果百度云加速有页面规则,可以参考。

    另外,自适应的模板大法好
    dcd
        6
    dcd  
    OP
       Oct 14, 2016
    @qwer1234asdf
    @Technetiumer

    其实缓不缓存都无所谓,只是奇怪那里配置出错,使得`httpGETabc.com/11`在不同 UA 散列值会不同。
    hahasong
        7
    hahasong  
       Oct 15, 2016
    现在是 2016 年了,大家都在用 fpm
    wdlth
        8
    wdlth  
       Oct 15, 2016
    现在是 2016 年了,大家都在用 lua
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2561 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:24 · PVG 19:24 · LAX 04:24 · JFK 07:24
    ♥ Do have faith in what you're doing.