Nginx
nginx奇怪的php問題
我剛剛完成了一個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
可能被更新覆蓋的所有者,並且感覺不對。