Estoy intentando hacer de Nginx un proxy inverso para Apache en un servidor centos 7.
Esto es lo que hice hasta ahora:
Cree un archivo de configuración para Nginx:nano /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;
}
}
Cambiar 2 líneas en/etc/httpd/conf/httpd.conf:
Listen 127.0.0.1:8080
DocumentRoot "/usr/share/nginx/html/"
Creé un archivo llamado info.php en /usr/share/nginx/html y <?php infophp();?>
lo puse, pero cuando intento cargar la páginahttp://Mi_IP/info.phpAparece una ventana emergente para descargar el archivo, mientras que quiero que se ejecute el archivo.
Pasé este comandohttpd -M | grepphp para ver si el módulo PHP está presente en mi servidor web Apache, y obtengo "php7_module (compartido)", así que supongo que sí.
Cualquier ayuda será apreciada, gracias.
Enrique
pd: cuando sigohttp://Mi_IPObtengo la página de inicio predeterminada de Nginx p.s2: para aquellos que preguntan, ya publiqué sobre un problema relacionado en serverfault (error 403), pero parece que ya no tengo el problema (es decir, si voy a verhttp://Mi_IP/cualquier_css_file.csspor ejemplo, se muestra bien, no hay errores)
Respuesta1
Necesita tener una instancia de PHP FPM ejecutándose en su servidor para ejecutar los scripts php. Puedes comprobarlo ejecutando
find / -type d -iname *fpm*
Si esto arroja algunos resultados entonces ya está instalado. Ahora, para averiguar el puerto/socket en el que está escuchando, puede ejecutar:
find / -type d -iname *fpm* | xargs grep -r "^listen[= ]"
Que debería devolver algo como esto:
/etc/php/7.2/fpm/pool.d/www.conf:listen = /run/php/php7.2-fpm.sock
En su directorio de configuración de Nginx (generalmente /etc/nginx/
) es posible que ya tenga un archivo fastcgi_params
; si no, cree uno y copie el ejemplo.aquí
Luego cambie su bloque de ubicación de php para incluir su archivo de configuración y pase la solicitud a php fpm usando el puerto/socket devuelto por el comando anterior, así:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
include fastcgi_params;
}
Ahora reinicie Nginx y debería funcionar.