nginx 访问 php 页面提示 connect reset by

1,173 阅读1分钟

我在两台机器上部署了 nginx 和 php 后,配置了 nginx 支持 php,也启动了 php-fpm,当我访问的时候直接报错了,也不知道什么原因

nginx 搭建

master1 192.168.1.10

master2 192.168.1.6

[root@master1 ~]# yum -y install nginx
[root@master1 ~]# vim /etc/nginx/nginx.conf
user    nginx;
worker_processes        auto;
pid     /var/run/nginx/nginx.pid;
worker_rlimit_nofile    65535;
events {
    worker_connections  65535;
}
http {
        charset utf-8;
        sendfile        on;
        tcp_nopush      on;
        tcp_nodelay     on;
        server_tokens   off;
        gzip    on;
        gzip_vary       on;
        gzip_proxied    any;
        gzip_comp_level 6;
        client_max_body_size    32M;
        keepalive_timeout       65;
        #MIME
        include mime.types;
        default_type    application/octet-stream;
        #logging
        log_format      main    '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for $request_time $upstream_response_time';
        log_format      error   '$remote_addr [$time_local] $request $status $body_bytes_sent $http_referer $http_x_forwarded_for $request_time $upstream_response_time';
        access_log      /data/nginx/log/access.log  main;
        error_log       /data/nginx/log/error.log       error;

        #SSL
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_protocols TLSv1.3;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8 8.8.4.4 208.67.220.220 valid=60s;
        resolver_timeout 2s;
        upstream phpstream {
#               ip_hash;
#               keepalive       20; #如果要开启它,需要设置fastcgi_keep_conn 为 on
                server  172.17.20.170:9000      max_fails=5     fail_timeout=3;
                server  172.17.20.171:9000      max_fails=5     fail_timeout=3;
                server  172.17.20.172:9000      max_fails=5     fail_timeout=3;
                server  172.17.20.173:9000      max_fails=5     fail_timeout=3;
        }
        server {
                listen       80 default_server;
          #     server_name  localhost;
                location ~ \.php$ {
                    root    /usr/local/var/www/;  #master2 主机上 php 脚本存在的位置
                    fastcgi_pass phpstream;
                    fastcgi_index  index.php;
                    fastcgi_keep_conn on;
                    fastcgi_param  SCRIPT_FILENAME  /usr/local/var/www/$fastcgi_script_name;
                    include    fastcgi_params;
                }
        }
    }

安装 php

[root@master2 ~]# yum install php php-fpm
[root@master2 ~]# vim /etc/php-fpm.d/www.conf
........
listen = 0.0.0.0:9011
user=nginx
group=nginx
listen.allowed_clients=any
........
[root@master2 ~]# cat /usr/local/var/www/index.php
<?php
phpinfo();
?>
当访问的时候nginx 日志报错如下。当访问不频繁的时候报的是第二条,频繁的时候报的是第一条,无法返回正常页
[root@master1 ~]# cat /var/log/nginx/error.log
2019/10/29 22:25:02 [error] 16763#0: *146 upstream prematurely closed connection while reading response header from upstream, client: 192.168.1.6, server: , request: "GET /index.php HTTP/1.1", upstream: "fastcgi://192.168.1.6:9011", host: "192.168.1.10"
2019/10/29 22:25:07 [error] 16763#0: *146 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.6, server: , request: "GET /index.php HTTP/1.1", upstream: "fastcgi://192.168.1.6:9011", host: "192.168.1.10"

谁知道这两个问题怎么解决?麻烦提供一下解决思路。

PS:已经解决完了,问题是因为listen.allowed_clients=any参数的问题,按照官方的解释是:允许那些fastcgi客户端来进行连接,如果留空的话会允许所有的主机,默认值为any,设置为any不生效,注释掉这个配置就可以正常访问了