nginx安裝後啓動默認訪問目錄是/usr/share/… ,根據需要可以更改成其他目錄,譬如/home/www/html/…
更改後通常都會遇到訪問403問題,通過如下幾步可以解決403問題:
1.檢查nginx.conf user權限是不是root,如果不是則查看該user是否有權限訪問新目錄
2.查看新目錄的文件權限是否可以訪問
3.查看SELinux 是否開啓。
如果SElinux是開啓的,通常很多做法是直接關閉SElinux,
其他可以通過其他方式不需要關閉SElinux也能正常使用nginx,
使用以下指令查看selinux配置:
# getsebool httpd_can_network_connect
#httpd_can_network_connect --> off
SELinux配置將httpd網絡連接關閉,所以很自然將其啓用即可:
setsebool -P httpd_can_network_connect 1
如果還不行,再檢查網站目錄和文件的權限。爲方便起見直接用-lZ選項。用於顯示詳細信息和SELinux權限信息
[root@localhost html]# ls -lZ
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 archive.html
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 blog
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 blog_backup
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 blog.htm
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 blog.html
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 css
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 home_page
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 home_start #問題行
再查看selinx的工作狀態,判斷是不是SELinux引起的。
[root@localhost httpd]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
這就是導致網站權限不正確的原因。
我猜測可能是在selinux啓用時對目錄或文件進行操作導致的。
所以使用chcon更改SELinux權限以及顯示結果如下:
setenforce 0 #必須暫時停止SELinux,否則可能導致操作失敗。
chcon -t httpd_sys_content_t -R /var/www/html/home_start/ #R參數是遞歸操作的意思
經過修改就會發現SELinux的對應權限已經和其他目錄相同了!都是httpd_sys_content_t。