[英]Cannot get PHP to serve on Nginx -- Error 502 Bad Gateway
我對 nginx 還很陌生,並認為用它來服務 php 會非常簡單,因為這種設置很常見,但它似乎比我預期的要復雜得多。
這是我的配置..
server {
listen 80;
server_name domain.com www.domain.com;
location / {
root /srv/www/domain.com/public_html;
index index.php;
}
# serve static files directly
#location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$
# access_log off;
# expires 30d;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass /var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
如果我用“index.html”文件替換“index.php”,nginx 完美地提供了 html。 但是切換到 php 會導致 502 錯誤。
我看過指南建議修改從 iptables 到 php-fpm 到 php.ini 到 fast-cgi 到可用站點的任何內容..?
我不確定這些教程中的許多正在嘗試做什么......現在我只想讓我的 index.php 提供 phpinfo()。 下一步是什么?
是否有明確的指南來介紹可用於為 php 和 nginx 提供服務的各種選項?
您必須安裝php-fpm並添加此部分: http : //wiki.nginx.org/PHPFcgiExample
我假設您已成功安裝php-fpm(FastCGI Process Manager)
轉到php-fpm/php.ini
找到行cgi.fix_pathinfo=1
,取消注釋並將值1
更改為0
。
cgi.fix_pathinfo=0
現在重啟php-fpm
服務。
通過您的終端
service php5-fpm restart
(我不確定你的Linux發行版必須是一樣的)
這可能是權限問題,您可以在日志文件中識別錯誤
從日志中提取記錄
022/08/09 20:37:27 [crit] 3930#0: *17 connect() to unix:/var/run/php/php-fpm.sock 在連接到上游客戶端時失敗(13:權限被拒絕) :192.168.80.36,服務器:127.0.0.1,請求:“GET /info.php HTTP/1.1”,上游:“fastcgi://unix:/var/run/php/php-fpm.sock:”,主機: “127.0.0.1”
這提供了服務器沖突的線索,現在要驗證運行哪個用戶,我們需要檢查 php-fpm 和 nginx 工作節點
工作節點執行命令ps aux | grep 'nginx'
ps aux | grep 'nginx'
這將指示 nginx 工作節點的用戶,在這種情況下它是nobody
root@ubuntu:/var/nginx/html# ps aux | grep 'nginx'
沒有人3930 0.0 0.0 37636 3784? S 20:37 0:00 nginx:工作進程
檢查 php fpm 服務執行命令ps aux | grep 'php-fpm'
ps aux | grep 'php-fpm'
在我的情況下,它將指示用戶為“www-data”
root@ubuntu:/var/nginx/html# ps aux | grep 'php'
www-數據1320 0.0 0.2 498796 11908? S 19:34 0:00 php-fpm: 池 www
www-數據 1323 0.0 0.2 498796 11908? S 19:34 0:00 php-fpm: 池 www
為了解決這個沖突,在 nginx.conf 文件中,您必須在頂部定義用戶派生為 www-data 即用戶 www-data;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.