web-dev-qa-db-fra.com

Échec de la mise en cache Nginx - connexion refusée

Je ne parviens pas à faire fonctionner mon site après avoir essayé d'implémenter la mise en cache Nginx.

J'utilise Ubuntu 16.04 (xenial), Nginx (1.10.3), PHP-FPM (7.0) et WordPress.

Le port 9000 (pour php-fpm) n'est pas filtré par UFW.

Reproduire mon environnement

1 - réglage des confs:

2 - Créer un répertoire cache:

mkdir -p /var/cache/nginx/fastcgi_temp/cache/
chmod 755 /var/cache/nginx/fastcgi_temp/cache/
chown www-data:www-data /var/cache/nginx/fastcgi_temp/cache/

3 - Redémarrage du serveur:

systemctl restart nginx.service
/etc/init.d/php*-fpm restart

4- Essais d'erreur et de débogage:

*1 connect() failed (111: Connection refused) while connecting to upstream,
client: MY_IP_ADDRESS, server: example.com, request: "GET /
HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000".

Le navigateur donne:

502 Bad Gateway nginx/1.10.3 (Ubuntu)

Debug:

/etc/init.d/php*-fpm status

apporte:

● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-04-27 07:09:28 UTC; 3s ago
  Process: 16336 ExecStartPre=/usr/lib/php/php7.0-fpm-checkconf (code=exited, status=0/SUCCESS)
 Main PID: 16346 (php-fpm7.0)
   Status: "Ready to handle connections"

Ma question

Pourquoi la connexion est refusée et mon site est en panne?

Mise à jour pour NerdOfLinux:

+ curl -I example.com
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
Content-Length: 194
Connection: keep-alive

Et

grep "listen" /etc/php/7.0/fpm/pool.d/www.conf | grep -v ";"
+ grep --color=auto -v ';'
+ grep --color=auto listen /etc/php/7.0/fpm/pool.d/www.conf
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
2
user9303970

La question en jeu est une mauvaise configuration de la directive nginx fastcgi_pass vers une passerelle dorsale/amont inexistante.

Depuis 14.10 (ou était-ce 15.10, je ne me souviens plus maintenant exactement) php-fpm écoute sur un socket UNIX local et non pas TCP port 9000 par défaut. Je le sais parce que j’ai dirigé l’effort de modification par défaut d’Ubuntu et de Debian pour FPM, et cela a été accepté dans l’emballage. Et je sais que c’est votre configuration à cause de la ligne listen = de votre FPM www.conf qui indique son écoute sur une prise.

Mettez unix:/run/php/php7.0-fpm.sock dans votre directive fastcgi_pass dans le bloc serveur nginx et non dans le 127.0.0.1:9000 que vous possédez. Cela devrait alors lui permettre de fonctionner correctement car la passerelle _ PHP en amont correcte est ensuite utilisée.

2
Thomas Ward