Nginx como proxy reverso para Apache, PHP solicitado para download em vez de executado

Nginx como proxy reverso para Apache, PHP solicitado para download em vez de executado

Estou tentando fazer do Nginx um proxy reverso para Apache em um servidor centos 7.

Aqui está o que eu fiz até agora:

Crie um arquivo de configuração 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;
    }
}

Altere 2 linhas em/etc/httpd/conf/httpd.conf:

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

Criei um arquivo chamado info.php em /usr/share/nginx/html e coloquei <?php infophp();?>nele, mas quando tento carregar a páginahttp://Meu_Ip/info.phpRecebo um pop-up para baixar o arquivo, mas quero que o arquivo seja executado.

passei esse comandohttpd-M | grepphp para ver se o módulo Php está presente no meu servidor web Apache, e recebo "php7_module (shared)", então acho que sim.

Qualquer ajuda seria apreciada, obrigado.

Henrique

obs: quando eu continuarhttp://Meu_IPRecebo a página inicial padrão do Nginx p.s2: para quem pergunta, já postei sobre um problema relacionado no serverfault (erro 403), mas parece que não tenho mais o problema (ou seja, se eu for verhttp://Meu_IP/any_css_file.csspor exemplo, está bem exibido, sem erros)

Responder1

Você precisa ter uma instância do PHP FPM rodando em seu servidor para executar os scripts php. Você pode verificar executando

find / -type d -iname *fpm*

Se isso retornar alguns resultados, então já está instalado. Agora, para descobrir a porta/soquete que está escutando, você pode executar:

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

Que deve retornar algo assim:

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

No diretório de configuração do Nginx (normalmente /etc/nginx/), você já pode ter um arquivo fastcgi_params, se não, crie um e copie o exemploaqui

Em seguida, altere seu bloco de localização do php para incluir seu arquivo de configuração e passe a solicitação para o php fpm usando a porta/soquete retornada do comando anterior, assim:

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

Agora reinicie o Nginx e deve funcionar.

informação relacionada