1. 程式人生 > >Nginx+php更改了fastcgi_pass後面的地址php不能正常請求

Nginx+php更改了fastcgi_pass後面的地址php不能正常請求

防火墻 配置 php-fpm 測試 mac os nec 防火 request tel

1.1.1 通過yum安裝Nginx和php,更改了Nginx裏面fastcgi_pass後的地址php不能正常請求
1.1.1.1 問題還原:
Nginx+php的服務器地址是10.0.0.41/24
Nginx 安裝的是1.14 php安裝的是7.1,yum安裝過程不細講

nginx的location裏面的配置如下
location ~ \.php$ {
  root           /usr/share/nginx/html;
  fastcgi_pass   10.0.0.41:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
  include        fastcgi_params;
  }

php-fpm配置文件更改的位置為:
listen = 10.0.0.41:9000
這個時候在/usr/share/nginx/html下面寫了一個php的測試頁
[root@nginx01-41 ~]# cat /usr/share/nginx/html/test.php 
<?php
phpinfo();
?>

然後在瀏覽器裏面訪問10.0.0.41/test.php
技術分享圖片
1.1.1.2 剖析與解決:
然後分析錯誤502可能的原因:這個裏面的bad geteway不是字面上的意思,這個地方基本上都是php-fpm請求的時候不正常,然後就開始著後段的錯誤
查看訪問日誌,和錯誤日誌

訪問日誌:
10.0.0.1 - - [30/Aug/2018:01:46:02 -0400] "GET /test.php HTTP/1.1" 200 95137 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
10.0.0.1 - - [30/Aug/2018:02:18:05 -0400] "GET /test.php HTTP/1.1" 502 575 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"

錯誤日誌:
2018/08/30 02:18:05 [error] 9609#9609: *4 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 10.0.0.1, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://10.0.0.41:9000", host: "10.0.0.41"
意思就是請求這個主機的10.0.0.41:9000端口失敗

然後就去觀看防火墻和selinux是否關閉,9000端口是否正常,發現防火墻和selinux都是關閉的,9000端口也正常監聽。
這個時候就想肯定是php-fpm轉發又問題,就開始去找配置文件,看看是不是監聽的有問題
vim /etc/php-fpm.d/www.conf
在裏面搜索listen監聽相關的內容,找到一個listen.allowed_clients 的語句
listen.allowed_clients = 127.0.0.1,看到這的時候我就明白可能是php配置文件裏面我們要允許clients可以通過這個地址訪問
更改為listen.allowed_clients = 10.0.0.41
保存重啟php服務後測試發現正常。問題得以解決。

技術分享圖片

Nginx+php更改了fastcgi_pass後面的地址php不能正常請求