Nginx

Nginx 提供靜態 PHP 文件

  • March 17, 2016

在嘗試為緩慢的 Wordpress 站點實現一些記憶體時 - 我在 NGINX 級別啟用了 cachig。

但是,它似乎堅持渲染文件,並且不想放手。

它不在記憶體中,我嘗試將所有內容還原,將 SendFile 禁用為 Off,但是 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 levels=1:2 keys_zone=NEN_CACHE:100m inactive=60m; fastcgi_cache_key " $ scheme $ 請求方法 $ 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 請求標頭

似乎正在進行的記憶體是由於 WP Super Cache,一個 wordpress 外掛。

我通常會建議您查閱它的文件,但是該外掛幾年前遭受了一個令人難以置信的重大漏洞,這完全破壞了我對作者的任何信任。就個人而言,我會懷著極大的偏見從您的伺服器中清除它,並使用更高級別的記憶體層(如您正在做的 Nginx 或Varnish,這非常好)作為您唯一的整頁記憶體系統。

這不是一個直接的答案,而是告訴您如何自己解決。這些事情通常很難解決,因為您無法發布所有內容。

回到基礎。從您的 PHP 位置刪除所有額外的調整內容。使用只呼叫 phpinfo() 的簡單 PHP 文件。嘗試通過套接字呼叫 PHP,看看它是否有所作為。檢查 PHP 和 nginx 訪問和錯誤日誌以獲取有用資訊。一旦基礎工作添加了基本的 Wordpress、Nginx 記憶體。除非您有很多登錄使用者,否則我不會過多地在 Wordpress 中進行記憶體,Nginx 記憶體將在大多數情況下為您的大部分站點提供服務。如果您無法停止生產,請在不同的 nginx 位置下的單獨目錄中執行此操作。

這就是我如何稱呼我的 PHP 解釋器 HHVM,但我像您一樣稱呼 php-fpm。

upstream php {
  server 127.0.0.1:9001;
}

# Inside my php location
fastcgi_pass   php;

引用自:https://serverfault.com/questions/764430