Ubuntu

nginx 403 Forbidden Error 在使用者主目錄中託管

  • March 5, 2014

我已經在本地機器上的 Ubuntu 12.04 上安裝了 nginx 1.1.19,/etc/nginx/nginx.conf除了更改使用者指令外保持預設設置。

/etc/nginx/nginx.conf

user nginx www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...

我想在我的使用者目錄中使用 web 根目錄創建一個簡單的靜態站點(假設我的使用者名是 ‘ubuntu’)。這是我的測試站點的配置。

/etc/nginx/sites-available/test-site

server {
   #listen   80; ## listen for ipv4; this line is default and implied
   #listen   [::]:80 default ipv6only=on; ## listen for ipv6

   root /home;
   index index.html index.htm;

   # Make site accessible from http://localhost/
   server_name localhost;

   location / {
   # First attempt to serve request as file, then
   # as directory, then fall back to index.html
   try_files $uri $uri/ /index.html;
   # Uncomment to enable naxsi on this location
   # include /etc/nginx/naxsi.rules
   }

}

現在顯然將我所有的文件放在網路根目錄中,所以我不會把它放在真正的伺服器上,但這說明了我的觀點。如果我在 /home/index.html (不在我的 ubuntu 使用者文件夾中)創建一個簡單的網頁,我可以訪問該頁面http://localhost/

這工作得很好。現在我想簡單地將 web 根目錄放在使用者文件夾中。因此,在 /etc/nginx/sites-available/test-site 中,我將 root 指令更改為 `root /home/ubuntu;。我重新創建指向測試站點的符號連結,將 /home/index.html 移動到 /home/ubuntu/index.html 並停止並啟動 nginx 伺服器。現在我收到 403 Forbidden 錯誤。

我的第一個懷疑是這是一個許可問題。但是,當我跑步時,ls -al index.html我看到

-rw-r--r--  1 nginx   www-data   183 Aug 12 13:13 index.html

我覺得哪個合適?甚至執行 chmod 777 /home/ubuntu/index.html 以便權限

-rwxrwxrwx 1 nginx www-data 183 Aug 12 13:13 index.html

沒有幫助。/etc/init.d/nginx configtest也不會產生任何錯誤,我確信符號連結/etc/

所以我已經在這裡待了幾個小時,現在我想知道我的使用者目錄有什麼特別之處,以至於我無法在其中提供任何東西?這些天Ubuntu加密主目錄?這可能是問題嗎?我在 EC2 Ubuntu 12.04 實例上也有這個問題(不知道使用者目錄是否在那裡加密)

預設使用者主目錄權限

因此,Ubuntu 12.04 中使用者主目錄的預設權限似乎是 700。Nginx 需要對應該服務的文件具有讀取權限,並且在從根目錄到服務文件的路徑中的每個父目錄中具有執行權限。

您可以通過執行為您的使用者目錄授予這些權限

chmod 701 user_home

您也可以使用 755,這是許多系統上主目錄的預設權限設置。

Web 根目錄中的目錄/文件可以屬於 www-data 使用者或您的正常個人使用者,只要 nginx 執行的使用者/組(如 nginx.conf 中定義)對所有要提供的文件具有 READ 權限,並且對所有 Web 根目錄執行權限。

我只是將我的 web 根目錄中的所有目錄設置為由我的使用者帳戶擁有並擁有 755 權限,並將所有要從 web 根目錄提供的文件設置為擁有 664 權限,因為這些是我機器上的預設設置。

關於將權限編號轉換為字元串 Rep 的注意事項。

Ex. drwxr-x--x becomes 751.

忽略第一個字元(d 表示目錄,- 表示文件等)。剩下的 9 個字元形成一個二進制三元組,其中任何非破折號字元為 1,破折號為 0。

So drwxr-x--x becomes rwxr-x--x 
becomes 111 101 001 
which is converted to a decimal 751

在處理權限時,我需要對此進行複習。

引用自:https://serverfault.com/questions/416787