Ubuntu

403 禁止使用 nginx 從 VirtualBox 共享文件夾提供靜態文件(Ubuntu 10.04LTS 來賓,Windows 7 主機)

  • March 21, 2012

我正在開發本地開發虛擬機,並嘗試使用 gunicorn 和 nginx 作為靜態資源的反向代理來測試為我的站點提供服務。user nginx;該站點在 nginx.conf 中載入減去靜態資源 。嘗試單獨載入靜態資源會顯示 403 Forbidden 錯誤。

為背景。靜態資源位於/media/sf_work. 所有文件都歸root:vboxsf(VirtualBox 預設)所有。我在系統上的使用者帳戶已添加到vboxsf組中,並且我對共享文件夾具有完全訪問權限。

為了比較,我嘗試將 nginx.conf 使用者更改為我的使用者帳戶。在那種情況下,靜態文件確實載入了,但是首頁本身給出了 403 Forbidden 錯誤。所以,我然後嘗試將nginx使用者添加到vboxsf組中,但隨後一切都給出了 403 Forbidden 錯誤。經過進一步調查,似乎如果 nginx.conf 使用者在任何組中,則會導致 403 Forbidden。

知道這裡可能發生了什麼嗎?

更新

因此,當使用我的使用者帳戶作為 nginx 使用者(靜態文件工作的唯一方式)時,首頁返回 403 Forbidden 的問題與目錄中沒有 index.html 文件(目錄列表被拒絕)有關。但是,我顯然不希望它列出目錄;它應該將此請求傳遞給 gunicorn 代理。我正在使用以下內容:

location / {
   try_files $uri $uri/ @proxy
}
location @proxy {
   proxy_pass_header Server;
   proxy_set_header Host $http_host;
   proxy_redirect off;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Scheme $scheme;
   proxy_connect_timeout 10;
   proxy_read_timeout 10;
   proxy_pass http://127.0.0.1:8080;
}

這有什麼問題嗎?

所以,我終於解決了。首先,顯然,nginx.conf 使用者必須有權訪問共享文件夾,這意味著我必須使用我的使用者帳戶。我對此並不滿意,但這只是一個開發箱,所以安全性真的不是問題。

然後,我的try_files指令有問題。回想起來,這完全有道理。我正在請求/,並且該目錄確實存在,但我不想要那個匹配。所以我真正需要的是:

try_files $uri @proxy

然後,一切正常。

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