Nginx作為Apache的反向代理,Php提示下載而不是執行

Nginx作為Apache的反向代理,Php提示下載而不是執行

我正在嘗試使 Nginx 作為 centos 7 伺服器上 Apache 的反向代理。

這是我到目前為止所做的:

為 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/" 

我在 /usr/share/nginx/html 中創建了一個名為 info.php 的文件,並將<?php infophp();?>其放入其中,但是當我嘗試加載頁面時http://My_Ip/info.php我收到一個彈出視窗來下載文件,而我希望執行該文件。

我通過了這個命令httpd -M | grepphp 來查看我的 apache Web 伺服器中是否存在 Php 模組,並且我得到“php7_module(共用)”,所以我猜是的。

任何幫助將不勝感激,謝謝。

亨利

ps:當我繼續http://我的IP我得到預設的 Nginx 主頁 p.s2:對於那些詢問的人,我已經在 serverfault 上發布了相關問題(錯誤 403),但看來我不再有問題了(即如果我去看看http://My_IP/any_css_file.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,它應該可以工作了。

相關內容