nginx更改默認目錄403問題

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。

發佈了15 篇原創文章 · 獲贊 0 · 訪問量 373
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章