簡體   English   中英

嘗試了所有內容,但仍無法通過nginx + gunicorn提供Django項目的靜態文件

[英]Tried everything but still cannot serve static files of Django project via nginx+gunicorn

我必須通過nginx + gunicorn部署Django項目(nginx提供靜態文件,gunicorn提供其他文件。)

項目設置文件夾中的dev.py文件具有以下設置-

STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATIC_URL = '/static/'

nginx.conf看起來像這樣-

server {
listen 8000;   
server_name  localhost;

access_log /home/user/access.log;
error_log /home/user/error.log;

location / {
    proxy_pass http://localhost:8001;
}

location /static/ {
    autoindex on;
    alias /home/user/project_revamped/project/static;
}

}

我將服務器運行為-

gunicorn project.wsgi:application --bind=127.0.0.1:8001

在URL上位於localhost:8001的服務器上訪問時,顯示的頁面沒有任何靜態文件。

未填充nginx的error.log。 錯誤是瀏覽器試圖從URL請求靜態文件

localhost:8001/static/...

但是它應該從URL請求文件-

localhost:8000/static/...

因為nginx配置為通過該網址提供服務。

server {
  listen 8000;   
  server_name  localhost;
  root /home/user/project_dir/project;

  access_log /home/user/access.log;
  error_log /home/user/error.log;

  location /static/ {
    alias /home/user/project_dir/project/static/;
  }
  location / {
      proxy_set_header Host $http_host;
      proxy_pass http://localhost:8001;
      proxy_redirect default;
  }
  • 我認為這應該是針對您的情況的正確配置。
  • 理想情況下,您應該在端口80上監聽所有http請求,因此在生產中,監聽8000應該更改為80。
  • 如果您在代碼之前/位置寫靜態內容,而在代碼之后靜態內容將永遠無法到達位置/ static /
  • 必須有“ proxy_set_header主機$ http_host;” 這樣,在debug = False(在生產中)時,允許的主機會獲得一些價值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM