Nginx

nginx奇怪的php問題

  • January 8, 2017

我剛剛完成了一個centos 7伺服器的設置。我已經用 nginx 和 apache 安裝了 PHP 7。我根據測試的需要在它們之間切換。

當我使用 apache 時,一切正常。

當我使用 nginx 時,所有靜態內容也可以正常工作。

嘗試 PHP 時,所有小內容都可以正常工作。當有一些大的內容時,比如 phpinfo() 的輸出或一個大的 SQL SELECT,腳本會失敗而沒有任何錯誤(瀏覽器說沒有數據)。

我檢查了 nginx 日誌,它說一些 open() 到 php-fpm 由於訪問被拒絕而失敗,但我沒有看到任何錯誤,兩個程序都使用相同的 uid (apache) 執行。

可能是一些超時問題嗎?如果沒有,還有什麼?添加的配置(example.com 是伺服器)

nginx.conf

user apache;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;

events {
   worker_connections 1024;
}

http {
   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  /var/log/nginx/access.log  main;

   sendfile            on;
   tcp_nopush          on;
   tcp_nodelay         on;
   keepalive_timeout   65;
   types_hash_max_size 2048;

   index index.php index.html index.htm;
   include             /etc/nginx/mime.types;
   default_type        application/octet-stream;

   # Load modular configuration files from the /etc/nginx/conf.d directory.
   # See http://nginx.org/en/docs/ngx_core_module.html#include
   # for more information.
   include /etc/nginx/conf.d/*.conf;

   server {
       listen       80 default_server;
       # listen       [::]:80 default_server;
       server_name  examplecom www.examplecom;
       root         /var/www/example.com/;


       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;

       location / {
       }

       location ~ \.php$ {
               fastcgi_pass 127.0.0.1:9000;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
       }       


       error_page 404 /404.html;
           location = /40x.html {
       }

       error_page 500 502 503 504 /50x.html;
           location = /50x.html {
       }
   }

nginx錯誤日誌

2017/01/07 15:15:38 [crit] 5343#0: *60 open() "/var/lib/nginx/tmp/fastcgi/1/01/0000000011" failed (13: Permission denied) while reading upstream, client: 176.92.90.252, server: example.com, req
uest: "GET /adminer.php?sqlite=.... HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "example.com", referrer: "https://www.example.com/adminer.php?...."

php-fpm 配置不變(/etc/php-fpm.conf 和 /etc/php-fpm.d/www.conf 不變)。

謝謝。

由於您nginx以使用者身份執行apache,因此您無權訪問/var/lib/nginx/具有0700訪問權限且歸使用者所有的使用者nginx

所以最好再次nginx以使用者身份執行nginx並相應地更改您的 www root 的訪問權限。否則,您將不得不更改/var/lib/nginx可能被更新覆蓋的所有者,並且感覺不對。

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