Nginx報錯403問題排查與解決辦法
前言
今天領(lǐng)導(dǎo)讓我部署一個前端項目,一頓操作報錯訪問報錯403,讓我們一起搞定他。
環(huán)境
CentOS 7 x86 的服務(wù)器上部署了 Nginx 服務(wù)器。
配置文件
我把前端項目打包后的 dist 文件夾放在了 /root/webUi/ 目錄下,然后配置了 Nginx 的配置文件。nginx.conf 配置如下:

配置完成后,啟動 Nginx 服務(wù):
nginx
問題出現(xiàn):403 Forbidden
當(dāng)我興高采烈地在瀏覽器中訪問時,出現(xiàn)了 403 Forbidden 錯誤。

問題排查
檢查文件權(quán)限
我的第一反應(yīng)是檢查文件權(quán)限問題。給 /root/webUi/ 目錄賦予 755 權(quán)限:

但是問題依然存在,網(wǎng)站仍然返回 403 錯誤。已經(jīng)給了讀取權(quán)限,還是無法訪問呢?
檢查 Nginx 進程
接下來,檢查 Nginx 的運行進程,看看是什么用戶在實際運行 Nginx:

這時候我發(fā)現(xiàn)了問題:雖然 Nginx 的主進程是以 root 用戶啟動的,但工作進程(worker process)卻是以 nobody 用戶運行的!
檢查 nginx.conf 文件,確認了配置中的第一行:user nobody;這就是問題的關(guān)鍵所在。
解決
問題根源
雖然 Nginx 是由 root 用戶啟動的,但實際處理請求的工作進程是以 nobody 用戶運行的。在 Linux 系統(tǒng)中,nobody 用戶是一個權(quán)限非常有限的用戶,它無法訪問 /root 目錄下的文件,即使這些文件的權(quán)限是 755。
這是一個典型的 Linux 權(quán)限問題 - /root ,默認情況下其他用戶是沒有訪問權(quán)限的
解決方案
方案1:移動網(wǎng)站文件到 nobody 用戶可訪問的目錄(推薦)
將網(wǎng)站文件從 /root/webUi/ 移動到一個 nobody 用戶有權(quán)限訪問的目錄,例如 /data/webUi/:
# 創(chuàng)建新目錄 mkdir -p /data/webUi/ # 復(fù)制文件 cp -R /root/webUi/* /data/webUi/ # 確保權(quán)限正確 chmod -R 755 /data/webUi/
然后修改 nginx.conf 中的 root 配置:
location / {
alias /data/webUi/dist/;
index index.html index.htm;
}
# 重新加載nginx /usr/local/nginx/sbin/nginx -s reload
成功解決

方案2:將 Nginx 工作進程用戶改為 root(不推薦)
另一種方法是修改 nginx.conf 中的用戶配置,將工作進程也設(shè)置為 root 用戶:
user root;
但是,這種方法存在安全風(fēng)險,因為它賦予了 Nginx 工作進程 root 權(quán)限,如果 Nginx 被攻擊者利用,可能會導(dǎo)致整個系統(tǒng)被入侵。所以,強烈不推薦這種做法!
總結(jié)
- Nginx 的主進程和工作進程可能使用不同的用戶,這會影響文件訪問權(quán)限
- 在 Linux 中,用戶權(quán)限管理非常嚴格,特別是對于
/root目錄 - 不要盲目地將服務(wù)程序配置為使用 root 用戶運行,這會帶來安全風(fēng)險
到此這篇關(guān)于Nginx報錯403問題排查與解決辦法的文章就介紹到這了,更多相關(guān)Nginx報錯403解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx配置proxy protocol代理獲取真實ip的全過程
在現(xiàn)代開發(fā)中有很多場景需要拿到用戶的真實ip,比如安全策略,和地區(qū)熱點信息推送等功能,但是現(xiàn)在代理很多,用戶可能會通過代理訪問服務(wù),或者黑客攻擊的時候也會使用很多肉機隱藏其真實ip,所以本文給大家介紹了Nginx配置proxy protocol代理獲取真實ip的全過程2025-09-09
Linux系統(tǒng)下nginx日志每天定時切割的腳本寫法
本篇文章給大家分享使用Linux系統(tǒng)自帶的命令logrotate對Nginx日志進行切割的方法,對nginx日志切割腳本感興趣的朋友一起學(xué)習(xí)吧2016-11-11

