这是我当前的设置:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
index index.php index.html index.htm;
root /var/www/example.com;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 0.0.0.0:9000;
fastcgi_index index.php;
}
}
我添加了一个test.php文件,当请求时,给我200响应代码。我已经测试了其他页面,但是它们也一样,但是这些页面总是空白。
我在这里尝试了不同的组合方式:nginx showing blank PHP pages,但它们似乎对我没有用(404响应)。
我的Wordpress安装基于docker。在相同的设置中,我有MySQL和PHPMyAdmin。那些都很好。 Nginx直接安装在我的Centos 7.6服务器上。
我读到以下内容:https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/(页面底部的注释中的数字4),由于我使用的是Centos,似乎可能出现了此问题。
我不确定可能会丢失什么。
/var/log/nginx/error.log中的日志未显示任何内容。
答案 0 :(得分:0)
对proxy_pass
地址进行0.0.0.0
很奇怪。也许您需要在localhost
或运行PHP-FPM守护程序的主机上进行设置。
通常,当您提供服务并希望在所有接口中使用0.0.0.0
时,0.0.0.0
是一个位掩码,用于匹配所有接口的所有可能的IP。但是,当您要连接到服务(nginx要连接到PHP-FPM)时,需要显式设置IP,通常为localhost
或127.0.0.1
。
如果nginx和PHP-FPM在同一主机上运行,最好使用unix套接字,因为它没有TCP开销,因此性能会更好。
在nginx网站上:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php<PHP VERSION>-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
在PHP-FPM池文件上(通常为/etc/php/7.1/fpm/pool.d/www.conf
listen = /run/php/php<PHP VERSION>-fpm.sock