django - gunicorn、django 和 nginx 的静态文件

标签 django nginx hosts gunicorn static-files

我有一个 django 项目,想使用 gunicorn 和 nginx 部署它。

到目前为止一切正常,但是当我添加子域时,静态文件没有提供,我的页面看起来很糟糕!

如果我改用本地主机,一切都会完美无缺!

这里我留下我的 nginx.conf:

server {
    listen 80 default;
    client_max_body_size 4G; 
    server_name mytest.dev;

    keepalive_timeout 5;

    # path for static files
    root /Users/danielrodriguez/workspace/mtt/static;

    location / { 
        # checks for static file, if not found proxy to app 
        try_files $uri @proxy_to_app;
    }   

    location @proxy_to_app {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_pass   http://localhost:8000;
    }   
}

我的主机文件中也有这个:

127.0.0.1   localhost
127.0.0.1   mytest.dev
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

当我在浏览器中键入“mydev.test”时,如何使 nginx 像我在浏览器中键入“localhost”时那样工作?几乎所有我想做的就是使用类似 apache 中的虚拟主机的东西在同一个物理服务器中为一堆站点提供服务。

PD:如果有帮助,我也在使用 OS Lion。

最佳答案

看来你的 root 设置有误。

root /Users/danielrodriguez/workspace/mtt/static;

您应该检查为您的 css 文件请求的 URL。假设你有 STATIC_URL = '/static/' 你的浏览器可能想要加载 /static/css/styles.css 或类似的东西。

因此,文件 ./static/css/styles.css 应该在 root 目录中找到。

那么右边的root应该是:

root /Users/danielrodriguez/workspace/mtt;

当然,将 root 设置为您的项目根目录并不是一个好主意。因此,您可以为 staticmedia 创建符号链接(symbolic link),以在项目外部分隔目录。

希望对您有所帮助。

关于django - gunicorn、django 和 nginx 的静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669619/

相关文章:

node.js - AWS ElasticBeanStalk Node 中的套接字 Io

nginx - 如何强制 Nginx 针对上游服务器 block 中存在的主机名验证上游证书?

apache2 - 如何在本地主机上设置带或不带 www 前缀的子域/域

dns - 多个虚拟主机 - 此站点无法访问 Vagrant/Virtualbox

python - 如何验证序列化程序中嵌套项的长度?

Django,缓存端点是什么意思?

python - Django:如何使用参数重定向

nginx - 如何为我的 Kubernetes 集群部署入口 Controller

node.js - 在WebStorm中调试地址不是localhost的地方

python - 仅限网站的权限