我有一个 nginx web服务器,使用带有php5-fpm 的套接字。我的服务器上有几个php站点。某个php网站,我们称之为example.com
,也是使用这个系统设置的。
几分钟,example.com
效果很好并加载所有php脚本。但最终该网站将拒绝工作,使得nginx提供 500错误,因为它无法与php通信。奇怪的是,当我重新启动php-fpm进程(使用/etc/init.d/php5-fpm restart
)时,该站点重新联机(然后重复此过程)。
更奇怪的是,这只会影响我服务器上的example.com
站点。当example.com
停止工作时,我的其他基于php的站点继续使用相同的套接字和服务器正常工作。
我认为问题在于php-fpm,但我不知道是什么导致这种情况。我查看了我能找到的所有日志,但是他们没有显示出什么是造成这个问题。 php5-fpm日志只是说php-fpm正在运行并准备好接受连接。 nginx访问日志只打印GET请求。
这是我的php-fpm配置文件:
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.mode = 0666
pm = static
pm.max_children = 15
pm.max_requests = 100
request_terminate_timeout = 30s
这是example.com
的nginx配置:
server {
listen 80;
server_name www.example.com example.com;
root /srv/www/example.com/;
location / {
index index.html index.htm index.php;
}
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
为什么套接字可以选择性地停止example.com
但继续与所有其他网站一起使用?