nginx php forbidden
Nginx是目前最流行的web服務(wù)器之一。它以速度快、易于配置和高并發(fā)優(yōu)勢而受到廣泛的認(rèn)可。由于Nginx執(zhí)行效率高,在高負(fù)載環(huán)境下非常穩(wěn)定,所以有許多網(wǎng)站都采用它作為web服務(wù)器。Nginx配合PHP處理的網(wǎng)站越來越多,但是有時會出現(xiàn)“nginx php forbidden”的問題,例如:
403 Forbidden nginx/1.10.3
那么如何解決這一問題呢?
解決“nginx php forbidden”的問題
一般來說,出現(xiàn)“nginx php forbidden”的錯誤信息,是由于權(quán)限問題造成的。當(dāng)網(wǎng)站程序的文件或目錄不具備訪問權(quán)限時,就會出現(xiàn)這個錯誤。那么,解決該問題,我們需要了解Nginx配置文件的設(shè)置。這里我們以Ubuntu操作系統(tǒng)為例,共同學(xué)習(xí)如何解決“nginx php forbidden”的問題。
第一步:檢查Nginx配置文件的設(shè)置
我們首先需要查看一下Nginx的配置文件,確保文件路徑、用戶組以及權(quán)限等信息設(shè)置正確,否則會出現(xiàn)“nginx php forbidden”的錯誤信息。
步驟一:進(jìn)入Nginx的配置文件的存儲路徑:
cd /etc/nginx/sites-available/
步驟二:查看配置文件:
ls -alh
在結(jié)果中,可以看到nginx.conf、default和example.com等文件。以example.com為例:
-rw-r--r-- 1 root root 5949 Apr 24 12:39 example.com
該文件是按照默認(rèn)用戶和組的權(quán)限設(shè)置的,但如果其中有某些文件或目錄設(shè)置了錯誤的權(quán)限設(shè)置,則會引發(fā)“nginx php forbidden”的問題。
第二步:更改文件/目錄的權(quán)限
如果說第一步檢查設(shè)置正確,但出現(xiàn)了“nginx php forbidden”的錯誤信息,就需要查看文件/目錄的權(quán)限設(shè)置是否正確。找到對應(yīng)的文件或目錄,修改它們的權(quán)限為正確的訪問限制即可。
步驟一:找到對應(yīng)的文件或目錄:
cd /var/www/example.com ls -alh
在/var/www/example.com目錄里,包含網(wǎng)站相關(guān)的文件和目錄。在其中我們可以找到需要修改權(quán)限的文件或目錄:
-rw-r--r-- 1 root root 56 Apr 23 17:45 index.php
步驟二:更改文件/目錄的權(quán)限:
sudo chmod 644 index.php
更改權(quán)限后,再次訪問網(wǎng)站,如果返回正常頁面,則說明已解決“nginx php forbidden”的問題。
錯誤文檔中的permission denied
有時在錯誤文檔中,可能并不是報錯“nginx php forbidden”,而是報錯“permission denied”。這種情況下,一般是由于nginx服務(wù)器的訪問權(quán)限不足或是被限制而導(dǎo)致的。那么如何解決這一問題呢?
我們需要檢查Nginx的運行用戶以及所在的用戶組是否正確,否則會影響對文件的讀寫權(quán)限。當(dāng)然,也可能是由SELinux等安全機(jī)制所造成的。
步驟一:檢查Nginx運行用戶以及所處的用戶組:
ps aux | grep nginx
在結(jié)果中,找到nginx用戶:
root 1142 0.0 0.0 4336 724 ? Ss Sep21 0:00 nginx: master process /usr/sbin/nginx nginx 3642 0.0 0.1 18396 2868 ? S Sep29 0:00 nginx: worker process nginx 3644 0.0 0.1 18396 2868 ? S Sep29 0:00 nginx: worker process
可以看到,Nginx的主進(jìn)程是以root用戶的身份啟動的,而工作進(jìn)程是以nginx用戶的身份運行的。我們需要確保nginx用戶所在的用戶組具備訪問權(quán)限,否則就會出現(xiàn)“permission denied”的錯誤信息。
步驟二:檢查SELinux等安全機(jī)制是否開啟:
sestatus
結(jié)果中,可以看到SELinux開啟的狀態(tài):
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31
檢查SELinux等安全機(jī)制是否開啟,也可以解決“nginx php forbidden”等問題。
總結(jié)
“nginx php forbidden”通常是由于權(quán)限問題或是安全機(jī)制所造成的。若要解決這一問題,首先需要檢查Nginx的配置文件、文件/目錄的訪問權(quán)限設(shè)置、Nginx的運行用戶以及所處的用戶組等信息是否設(shè)置正確。如果出現(xiàn)“permission denied”的錯誤信息,也需要檢查SELinux等安全機(jī)制是否開啟。只有不斷總結(jié)并改進(jìn)所學(xué)的知識,才能更好地運維和管理網(wǎng)站。