[英]How to serve static files in nginx without hitting my gunicorn/django server?
通過遵循本指南的第一部分和第二部分,我已經設置了nginx / gunicorn / django,並且工作正常。 現在,我嘗試做的是包含自己的靜態文件,這些文件是通過構建VueJS項目創建的。 現在,我的靜態文件夾包含一個admin文件夾(按照指南第二部分的步驟自動放置在此處)和一個登錄文件夾。 我的文件結構如下所示:
- myproject
- myproject
- __pycache__
- __init.py__
- settings.py
- urls.py
- wsgi.py
- static
- admin
- css
- fonts
- img
- js
- login
- index.html
- static
- css
- img
- js
-db.sqlite3
- manage.py
我的nginx配置文件的最新迭代如下所示:
server {
listen 8000;
server_name 0.0.0.0;
rewrite_log on;
error_log /home/vagrant/debug.log debug;
root /sync/genetesis/github/cardioflux-webapp/myproject;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /sync/genetesis/github/cardioflux-webapp/myproject/static;
autoindex on;
}
location / {
include proxy_params;
proxy_pass http://0.0.0.0:8030;
}
}
這些是我輸入各種URL的結果:-當我輸入http://0.0.0.0:8000時 ,我看到了Django“恭喜!”。 頁面與火箭飛船。 -當我點擊http://0.0.0.0:8000/admin時 ,我會看到admin頁面,其中包含所有樣式。 -當我點擊http://0.0.0.0:8000/login時 ,我得到一個Django 404頁面,其中說:
Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order:
1. admin/
The current path, login, didn't match any of these.
據我了解,nginx僅應在無法找到與請求相關的靜態文件的情況下才將請求傳遞給gunicorn / django,但事實並非如此。 看起來像在管理請求上,它仍在傳遞給Django,在登錄請求上,它找不到我的文件,因此正在Django應用程序中嘗試作為GET進行操作。
在這一點上,我已經閱讀了太多的指南,教程等,以致於我對如何做一無所知。 我希望應用程序在我單擊0.0.0.0:8000/login時提供“ login”文件夾中的靜態文件,即index.html文件和相關的CSS / js。 我真的不需要管理部分才能工作,但這就是我可以工作的全部。 當沒有index.html時,我也不太了解admin的工作方式; 它一定是從Django得到的,但這完全顛覆了我的想法(如果可能的話,只能從nginx獲取靜態文件,否則其他請求將發送至gunicorn / Django)。
誰能向我解釋如何實現這一目標,或向我指出可以解釋這一點的資源? 如果需要更多信息,請告訴我
您誤解了該教程的內容。 您已將nginx配置為僅通過URL“ yourwebsite.com/static/”提供文件。 所有其他路徑(從“ /”開始,即所有路徑)都將直接路由到Django,因為這就是您告訴nginx要做的 。 如果顯示“如果用戶正在訪問靜態文件”,則表示“如果用戶正在/ static /下訪問URL”。
現在,您可能可以將nginx配置為首先使用try_files
指令在“ /”下查找靜態文件。 但這將是錯誤的事情。 您不希望您的登錄頁面是靜態HTML頁面。 Django應該處理您的整個網站。
例如,您可能希望登錄頁面看起來像站點的其余部分,這很可能涉及菜單和側欄之類的東西,這些東西是通過Django從數據庫中動態生成的。 而且,您將要確保已經登錄的用戶不會進入登錄頁面-Django處理該邏輯。 而且,如果用戶輸入錯誤的用戶名/密碼組合,您將希望在登錄表單本身上顯示這些錯誤-同樣,這將由Django完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.