NGINX возвращает пустые страницы, но код ответа всегда 200 - PullRequest
0 голосов
/ 16 июня 2019

Это мои текущие настройки:

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 показывает пустые страницы PHP , но, похоже, они не работают для меня (ответ 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 ничего не показывают.

1 Ответ

0 голосов
/ 16 июня 2019

Странно делать 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
...