Nginx как обратный прокси для Apache, PHP запрашивает загрузку вместо выполнения

Nginx как обратный прокси для Apache, PHP запрашивает загрузку вместо выполнения

Я пытаюсь сделать Nginx обратным прокси-сервером для Apache на сервере Centos 7.

Вот что я делал до сих пор:

Создайте файл конфигурации для Nginx:нано /etc/nginx/conf.d/default.conf

server {
    listen   80; 

    root /usr/share/nginx/html/; 
    index index.php index.html index.htm;

    server_name _; 

    location / {
    try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {

    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;

     }

     location ~ /\.ht {
            deny all;
    }
}

Измените 2 строки в/etc/httpd/conf/httpd.conf:

Listen 127.0.0.1:8080
DocumentRoot "/usr/share/nginx/html/" 

Я создал файл с именем info.php в /usr/share/nginx/html и вставил <?php infophp();?>его, но когда я пытаюсь загрузить страницуhttp://Мой_Ip/info.phpПоявляется всплывающее окно с предложением загрузить файл, хотя я хочу, чтобы файл был запущен.

Я передал эту командуhttpd -M | grepphp, чтобы проверить, присутствует ли модуль PHP на моем веб-сервере Apache, и получаю «php7_module (shared)», так что, полагаю, это так.

Любая помощь будет оценена по достоинству, спасибо.

Генри

пс: когда я продолжуhttp://Мой_IPЯ получаю домашнюю страницу Nginx по умолчанию. p.s2: Для тех, кто спрашивает, я уже писал о связанной проблеме на serverfault (ошибка 403), но, похоже, у меня больше нет этой проблемы (т. е. если я зайду посмотретьhttp://Мой_IP/любой_css_файл.cssнапример, он хорошо отображается, без ошибок)

решение1

Вам необходимо иметь экземпляр PHP FPM, работающий на вашем сервере, чтобы выполнять скрипты php. Вы можете проверить, запустив

find / -type d -iname *fpm*

Если это вернет какие-то результаты, то он уже установлен. Теперь, чтобы узнать порт/сокет, который он прослушивает, вы можете запустить:

find / -type d -iname *fpm* | xargs grep -r "^listen[= ]"

Что должно вернуть что-то вроде этого:

/etc/php/7.2/fpm/pool.d/www.conf:listen = /run/php/php7.2-fpm.sock

В вашем каталоге конфигурации Nginx (обычно /etc/nginx/) у вас уже может быть файл fastcgi_params, если его нет, то создайте его и скопируйте пример.здесь

Затем измените блок расположения php, включив в него файл конфигурации, и передайте запрос в php fpm, используя порт/сокет, возвращенный предыдущей командой, например:

location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        include fastcgi_params;
    }

Теперь перезапустите Nginx, и все должно заработать.

Связанный контент