記錄一次nginx 403錯誤的處理情況 ,當然nginx 403錯誤引起的原因有很多,這里記錄的只是其中一種 (權限引發的問題)
場景:
我把個人簡歷放在github上,但是訪問很慢,就把這個靜態簡歷遷移到我的VPS服務器上,使用nginx做web服務,訪問時出現403錯誤
nginx配置(只展示重要部分):
server {
listen 10000 ;
server_name xxxx.xxxx.com ;
access_log /home/resume/log/access.log main ;
error_log /home/resume/log/error.log ;
location / {
root /home/resume/www ;
index index.html ;
}
}
訪問結果:
Paste_Image.png
查看nginx錯誤日志:
出現了關鍵字“Permission denied”
2016/12/23 14:02:26 [error] 5887#5887: *573 open() "/home/resume/www/index.html" failed (13: Permission denied), client: 192.168.15.2, server: xxxx.xxxx.com, request: "GET /index.html HTTP/1.0", host: "xxxx.xxxx.com"
排錯記錄:
一看是權限問題,馬上把** /home/resume/www**目錄下的所有文件權限改為777 ,重新訪問還是 403 ,反反復復折騰了很久,無解....
第二天晚上繼續,懷疑是nginx配置錯誤,搜索 nginx html時找到這個文章nginx 代理本地的html
原來是nginx配置中的用戶權限問題
-
查看nginx worker 用戶,www-data 是nginx默認配置的
Paste_Image.png - 靜態文件存放的文件夾用戶是scott,組為executor ,所nginx用戶為www-data導致權限問題(如果nginx配置的用戶和靜態文件的用戶不匹配,那怕權限是777也會出現權限問題,具體看<nginx.conf> nginx用戶權限)
用戶 - 配置nginx權限和靜態文件統一
- 編輯nginx配置文件
vim /etc/nginx/nginx.conf
- 修改文件第一行的為靜態文件的用戶和組
# user 用戶名 用戶組 ; 這里的用戶名和組就是靜態文件的
user scott executor ;
Paste_Image.png
- 檢查配置正確性
nginx -t
上面的命令執行后返回以下內容則成功
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
- 重啟nginx
nginx -s stop
nginx -c /etc/nginx/nginx.conf