Ubuntu下Nginx部署PHP項(xiàng)目返回404錯(cuò)誤如何解決?

Ubuntu下Nginx部署PHP項(xiàng)目返回404錯(cuò)誤如何解決?

ubuntu系統(tǒng)中使用nginx部署php項(xiàng)目時(shí),遇到404錯(cuò)誤是一個(gè)常見問題。本文將分析并解決此類問題,以一個(gè)具體的案例為例。

問題:開發(fā)者在Ubuntu系統(tǒng)上使用Nginx的8088端口部署PHP項(xiàng)目,修改配置文件后仍無法訪問,所有接口返回404錯(cuò)誤。問題根源在于Nginx配置文件中location塊的錯(cuò)誤配置,導(dǎo)致Nginx無法正確處理PHP請求。

解決方案:核心問題在于Nginx如何將PHP請求傳遞給PHP處理程序(PHP-FPM)。以下是一個(gè)修正后的Nginx配置文件示例:

server {     listen 80; # 監(jiān)聽端口,請根據(jù)實(shí)際情況修改,原文中提到的8088端口在此處未體現(xiàn)     server_name www.h5fiction1.com;     root /var/www/h5_fiction_1/public; # 請根據(jù)實(shí)際項(xiàng)目路徑修改,建議使用絕對路徑      location / {         try_files $uri $uri/ /index.php?$args; #嘗試查找文件或目錄,若不存在則轉(zhuǎn)發(fā)到index.php     }      location ~ .php$ {         include snippets/fastcgi-php.conf; #包含fastcgi-php配置         fastcgi_pass unix:/run/php/php8.1-fpm.sock; #或127.0.0.1:9000,根據(jù)PHP-FPM配置修改     } }

此配置的關(guān)鍵在于location ~ .php$塊,它定義了如何處理PHP文件。fastcgi_pass指向PHP-FPM的監(jiān)聽地址和端口(此處使用socket方式,更安全高效,請根據(jù)你的PHP-FPM配置調(diào)整)。try_files指令優(yōu)先嘗試查找靜態(tài)文件,若不存在則將請求轉(zhuǎn)發(fā)到index.php。root指令指定網(wǎng)站根目錄,請使用絕對路徑并確保其下存在public文件夾及index.php文件。

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

重要檢查點(diǎn):

  • PHP-FPM: 確保PHP-FPM已正確安裝和配置,并正在監(jiān)聽指定的端口或socket。檢查PHP-FPM日志以查找錯(cuò)誤。
  • 權(quán)限: 檢查Nginx用戶對項(xiàng)目文件和目錄的讀寫權(quán)限。
  • 端口: 確認(rèn)Nginx監(jiān)聽的端口與配置文件中一致,以及是否與其他服務(wù)沖突。 原文中提到的8088端口可能需要在實(shí)際配置中修改為80或其他端口。
  • 路徑: 仔細(xì)檢查root指令指定的路徑是否正確,確保指向項(xiàng)目根目錄下的public文件夾(或你的項(xiàng)目入口文件所在目錄)。 使用絕對路徑可以避免歧義。

通過以上步驟,并仔細(xì)檢查每個(gè)配置項(xiàng),應(yīng)該能夠解決Nginx部署PHP項(xiàng)目返回404錯(cuò)誤的問題。 建議使用try_files指令代替原有的if指令,因?yàn)樗啙嵏咝乙子诰S護(hù)。 同時(shí),使用unix socket連接PHP-FPM比TCP連接更安全和高效。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享