403 禁止使用 nginx 從 VirtualBox 共享文件夾提供靜態文件(Ubuntu 10.04LTS 來賓,Windows 7 主機)
我正在開發本地開發虛擬機,並嘗試使用 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
然後,一切正常。