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

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

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

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

這時(shí)候我發(fā)現(xiàn)了問(wèn)題:雖然 Nginx 的主進(jìn)程是以 root 用戶啟動(dòng)的,但工作進(jìn)程(worker process)卻是以 nobody 用戶運(yùn)行的!
檢查 nginx.conf 文件,確認(rèn)了配置中的第一行:user nobody;這就是問(wèn)題的關(guān)鍵所在。
解決
問(wèn)題根源
雖然 Nginx 是由 root 用戶啟動(dòng)的,但實(shí)際處理請(qǐng)求的工作進(jìn)程是以 nobody 用戶運(yùn)行的。在 Linux 系統(tǒng)中,nobody 用戶是一個(gè)權(quán)限非常有限的用戶,它無(wú)法訪問(wèn) /root 目錄下的文件,即使這些文件的權(quán)限是 755。
這是一個(gè)典型的 Linux 權(quán)限問(wèn)題 - /root ,默認(rèn)情況下其他用戶是沒(méi)有訪問(wèn)權(quán)限的
解決方案
方案1:移動(dòng)網(wǎng)站文件到 nobody 用戶可訪問(wèn)的目錄(推薦)
將網(wǎng)站文件從 /root/webUi/ 移動(dòng)到一個(gè) nobody 用戶有權(quán)限訪問(wè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 工作進(jìn)程用戶改為 root(不推薦)
另一種方法是修改 nginx.conf 中的用戶配置,將工作進(jìn)程也設(shè)置為 root 用戶:
user root;
但是,這種方法存在安全風(fēng)險(xiǎn),因?yàn)樗x予了 Nginx 工作進(jìn)程 root 權(quán)限,如果 Nginx 被攻擊者利用,可能會(huì)導(dǎo)致整個(gè)系統(tǒng)被入侵。所以,強(qiáng)烈不推薦這種做法!
總結(jié)
- Nginx 的主進(jìn)程和工作進(jìn)程可能使用不同的用戶,這會(huì)影響文件訪問(wèn)權(quán)限
- 在 Linux 中,用戶權(quán)限管理非常嚴(yán)格,特別是對(duì)于
/root目錄 - 不要盲目地將服務(wù)程序配置為使用 root 用戶運(yùn)行,這會(huì)帶來(lái)安全風(fēng)險(xiǎn)
到此這篇關(guān)于Nginx報(bào)錯(cuò)403問(wèn)題排查與解決辦法的文章就介紹到這了,更多相關(guān)Nginx報(bào)錯(cuò)403解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx配置proxy protocol代理獲取真實(shí)ip的全過(guò)程
在現(xiàn)代開(kāi)發(fā)中有很多場(chǎng)景需要拿到用戶的真實(shí)ip,比如安全策略,和地區(qū)熱點(diǎn)信息推送等功能,但是現(xiàn)在代理很多,用戶可能會(huì)通過(guò)代理訪問(wèn)服務(wù),或者黑客攻擊的時(shí)候也會(huì)使用很多肉機(jī)隱藏其真實(shí)ip,所以本文給大家介紹了Nginx配置proxy protocol代理獲取真實(shí)ip的全過(guò)程2025-09-09
Linux系統(tǒng)下nginx日志每天定時(shí)切割的腳本寫法
本篇文章給大家分享使用Linux系統(tǒng)自帶的命令logrotate對(duì)Nginx日志進(jìn)行切割的方法,對(duì)nginx日志切割腳本感興趣的朋友一起學(xué)習(xí)吧2016-11-11
Nginx捕獲并自定義proxy_pass返回的錯(cuò)誤問(wèn)題
這篇文章主要介紹了Nginx捕獲并自定義proxy_pass返回的錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
HipChat上傳文件報(bào)未知錯(cuò)誤的原因分析及解決方案
HipChat的功能類似于Campfire、Sazneo等在線協(xié)同工具,并且和Yammer以及Salesforce的Chatter等企業(yè)社交平臺(tái)有一定相似之處。你可以為單個(gè)項(xiàng)目或者小組搭建自有的聊天室,也可以很方便的發(fā)起一對(duì)一聊天2016-01-01
Nginx性能優(yōu)化的幾個(gè)方法總結(jié)
Nginx是一種流行的開(kāi)源Web服務(wù)器和反向代理服務(wù)器,以其高效和穩(wěn)定性而聞名,當(dāng)我需要進(jìn)行性能優(yōu)化時(shí),說(shuō)明我們服務(wù)器無(wú)法滿足日益增長(zhǎng)的業(yè)務(wù),性能優(yōu)化是一個(gè)比較大的課題,所以本文給大家介紹了Nginx性能優(yōu)化的幾個(gè)方法,需要的朋友可以參考下2024-11-11
一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn))
這篇文章主要介紹了一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
nginx反向代理下的長(zhǎng)連接實(shí)現(xiàn)
本文主要介紹了Nginx反向代理下的長(zhǎng)連接實(shí)現(xiàn),包括客戶端到Nginx和Nginx到后端服務(wù)器之間的長(zhǎng)連接設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下2024-11-11

