2017-04-06 155 views
1

我有一个nginx服务器与我的网站启用它正在侦听443和转发流量到我的django应用程序服务器使用uWSGI。我可以进入管理页面并登录,但不提供静态文件。我跑了python3 manage.py collectstatic。在使用letsencrypt添加SSL之前,所有工作都正常。闻听此事在nginx的访问日志:静态文件404找不到错误与ssl - Django + uWSGI + nginx

"GET /static/admin/css/base.css HTTP/1.0" 404 

这里是我的反向代理nginx的站点配置:

upstream staging_app_server { 
    server 52.52.52.52; 
} 

server { 
    listen 80; 
    server_name staging.site.com; 
    rewrite ^/(.*) https://staging.site.com/$1 permanent; 
} 

server { 

    listen 443; 
    server_name staging.site.com; 

    include snippets/ssl-staging.site.com.conf; 
    include snippets/ssl-params.conf; 

    ssl on; 
    ssl_session_cache builtin:1000 shared:SSL:10m; 

    access_log   /var/log/nginx/staging.access.log; 

    location/{ 

     proxy_set_header  Host $host; 
     proxy_set_header  X-Real-IP $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header  X-Forwarded-Proto $scheme; 

     proxy_pass   http://staging_app_server; 
     proxy_redirect  http://staging_app_server https://staging_app_server; 
    } 

    location ~ /.well-known { 
       allow all; 
    } 

    } 

和应用程序服务器nginx的配置:

server { 
    listen 80; 
    server_name staging.site.com; 

    location = /favicon.ico { access_log off; log_not_found off; } 

    location /static/ { 
     alias /home/ubuntu/api/staticfiles; 
    } 

    location /media/ { 
     alias /home/ubuntu/api/media; 
    } 

    location/{ 
     include   uwsgi_params; 
     uwsgi_pass  unix:/run/uwsgi/api.sock; 
     uwsgi_param  UWSGI_SCHEME $scheme; 
     uwsgi_param  Host $host; 
     uwsgi_param  X-Real-IP $remote_addr; 
     uwsgi_param  X-Forwarded-For $proxy_add_x_forwarded_for; 
     uwsgi_param  X-Forwarded-Host $server_name; 
     uwsgi_param  X-Forwarded-Proto $scheme; 
    } 
} 

我缺少什么?

+0

我希望您在服务器上运行collectstatic命令,以便将静态文件收集到指定的文件夹中。 –

+0

命令'python3 manage.py collectstatic'已经运行。 '/ home/ubuntu/api/staticfiles'中有文件。 – pitchdiesel

回答

0

您的alias陈述错误。 location的值和alias的值都应以/结尾,或以/结束。

此外,使用root其中alias值以location值结尾。详情请参阅this document

例如:

location /static/ { 
    alias /home/ubuntu/api/staticfiles/; 
} 
location /media/ { 
    root /home/ubuntu/api; 
} 
0

这工作:

location /static { 
    autoindex on; 
    alias /home/ubuntu/api/staticfiles; 
} 

感谢@理查德 - 史密斯指着我在正确的方向!