Permissions
Nginx 403 錯誤,當 nginx.conf 設置為從 /websites 提供服務時
我在目錄中創建了一個
websites
文件夾/
,並使用sudo chmod -R 777 /websites/
.之後,我進行了更改
/etc/nginx/conf.d/default.conf
以指向websites
目錄:server { listen 80; server_name localhost; location / { root /websites; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /websites/nginx/html; } }
但是
403 Forbidden
當我嘗試瀏覽到伺服器的公共 ip 時,我有一個 ,。為什麼會這樣?我該如何解決?
我在 nginx error.log 中有這個:
2017/08/27 20:41:03 [error] 3849#3849: *37 "/websites/index.html" is forbidden (13: Permission denied), client: **.**.130.159, server: localhost, request: "GET / HTTP/1.1", host: "**.**.**.120"
錯誤日誌非常清楚地表明:
- 你的 nginx 會嘗試讀取
/websites/index.html
,但它不能- 這就是它給出 403 錯誤的原因,而不是因為它的配置。
這是因為
13: Permission denied
. 這是一個系統錯誤。因此,您的 nginx 配置良好,它嘗試讀取該文件,但它不能。下一個問題是,為什麼不能。首先,您應該檢查它的作用。向執行 nginx 的使用者發送 Sudo(可能是 www-data,因此命令是:)
sudo -u www-data /bin/bash
,並嘗試自己讀取該文件(cat /websites/index.html
)。下一步取決於,結果是什麼。
@sebasth 在他的評論中是正確的:
可能是文件/文件夾權限錯誤,或/和 SELinux 策略不允許訪問。如果你啟用了 SELinux,你應該檢查審計日誌(
audit2why
可能有用的工具)。我認為最可能的兩個結果:
chmod
儘管您的命令看起來不錯,但權限設置不正確- 有一些 SELinux 讓你的生活更美好。