Я пытаюсь сделать 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, и все должно заработать.