3

我有一个 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,以防万一。

4

1 回答 1

4

看来你的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设置设置为项目根目录确实不是一个好主意。因此,您可以为项目之外的目录创建符号链接static并将media目录分开。

希望有帮助。

于 2012-12-02T13:32:11.610 回答