Nginx 提供静态 PHP 文件服务

Nginx 提供静态 PHP 文件服务

在尝试为缓慢的 Wordpress 网站实现一些缓存时 - 我在 NGINX 级别启用了缓存。

然而,看起来,它正在保留一个渲染的文件,并且不想放手。

它不在缓存中,我尝试恢复所有内容,禁用 SendFile 以关闭,但 Nginx 仍然希望提供 5 天前的陈旧文件。

我已经删除了 Nginx,重新安装、重建,但没有任何效果。

有什么想法吗?

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile off;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

#       access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";
}

fastcgi_cache_path /var/run/nginx-cache 级别=1:2 keys_zone=NEN_CACHE:100m 不活动=60m;fastcgi_cache_key“$scheme$request_method$host$request_uri”;

server {
        listen 82 default_server;
        listen [::]:81 default_server ipv6only=on;

        root /var/www/html/nen;
        index index.html index.htm index.php;

        # Make site accessible from http://localhost/
        server_name localhost;

        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
    }


        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 256 16k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_temp_file_write_size 256k;

                fastcgi_no_cache $no_cache;
                fastcgi_cache_bypass $no_cache;
#               fastcgi_cache drm_custom_cache;


                fastcgi_cache NEN_CACHE;
                fastcgi_cache_valid 404 60m;
                fastcgi_cache_valid 200 60m;
                fastcgi_max_temp_file_size 4m;
                fastcgi_cache_use_stale updating;
                add_header X-Cache $upstream_cache_status;

        }

来自 CURL 的 HTTP 请求

HTTP 请求标头

答案1

看起来那里发生的缓存是由于 WordPress 插件 WP Super Cache 造成的。

我通常会建议你咨询其文档,但该插件遭受了几年前的一个非常严重的漏洞这彻底摧毁了我对作者的信任。就我个人而言,我会非常谨慎地从你的服务器中清除它,并使用更高级别的缓存层(如你正在使用的 Nginx,或者,非常棒)作为您唯一的全页缓存系统。

答案2

这不是直接的答案,而是告诉你如何自己解决。这些事情通常很难解决,因为你无法发布所有内容。

回到基础。从您的 PHP 位置删除所有额外的调整内容。使用一个只调用 phpinfo() 的简单 PHP 文件。尝试通过套接字调用 PHP,看看是否有区别。检查 PHP 和 nginx 访问和错误日​​志以获取有用信息。一旦基础工作完成,添加基本的 Wordpress、Nginx 缓存。除非您有大量登录用户,否则我不会在 Wordpress 内部过多地使用缓存,Nginx 缓存将在大多数情况下为您的大多数网站提供服务。如果您无法停止生产,请在不同的 nginx 位置下的单独目录中执行此操作。

这就是我调用 HHVM(我的 PHP 解释器)的方式,但我调用 php-fpm 的方式与您相同。

upstream php {
   server 127.0.0.1:9001;
}

# Inside my php location
fastcgi_pass   php;

相关内容