Permissions

Nginx 403 錯誤,當 nginx.conf 設置為從 /websites 提供服務時

  • January 22, 2020

我在目錄中創建了一個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可能有用的工具)。

我認為最可能的兩個結果:

  1. chmod儘管您的命令看起來不錯,但權限設置不正確
  2. 有一些 SELinux 讓你的生活更美好。

引用自:https://unix.stackexchange.com/questions/388682