2013-04-03 113 views
0

我按照http://senko.net/en/django-nginx-gunicorn/中的說明部署我的django應用程序。我的應用程序運行在gunicorn下,並且我配置了nginx來爲該站點服務。一切都很好,除了靜態文件在實際靜態文件目錄的「靜態」子目錄中查看。django + gunicorn + nginx wierdness

我對nginx的配置文件中的靜態文件下列節:

location /static { 
    root /webapps/myproject/project_staticfiles; 
} 

其中/ webapps /下的myproject/project_staticfiles就是我所有的靜態文件的地方(我用manage.py collectstatic來把靜態文件放在那裏)。但是,在通過nginx配置中配置的端口訪問站點時,不會找到它們。 error.log顯示它們在更深的目錄中查找:/ webapps/myproject/project_staticfiles/static。

事實上,當我創建一個新的目錄「靜態」,並把所有的靜態文件放在那裏,一切都找到了。在我的項目settings.py文件中有:

STATIC_URL = '/static/' 
STATIC_ROOT = '/webapps/myproject/project_staticfiles' 

什麼是導致這種奇怪行爲的設置?

回答

1

我認爲你正在尋找使用alias

location /static { 
    alias /webapps/myproject/project_staticfiles; 
} 

如果你讀root的文檔,它指出:

根指定的請求文檔根目錄。例如,具有這種配置:

location /i/ { 
    root /spool/w3; 
} 

一種用於 「/i/top.gif」 將返回該文件 「/spool/w3/i/top.gif」 請求。 您可以在參數中使用變量。

root追加目錄到文件路徑,alias不,這就是爲什麼,static被添加到您的根形成/webapps/myproject/project_staticfiles/static

+0

大,這就是它!非常感謝你。 – user1487178 2013-04-04 02:22:24