Nginx como proxy inverso para Apache, Php solicitó la descarga en lugar de ejecutarse

Nginx como proxy inverso para Apache, Php solicitó la descarga en lugar de ejecutarse

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.

información relacionada