使用nginx配置django

时间:2015-05-11 08:33:30

标签: django nginx static gunicorn

我在我的服务器上配置了gunicorn来运行我的django-backend。 它工作得很好,但看起来很糟糕。我可以看到我的后端,但它只在HTML中。没有像以前那样的css等。所以我要去:

mysite.com:9000(我选择此端口用于我的gunicorn配置)

我读过我必须用nginx配置我的django。所以我已经安装了它并告诉我的django项目以下(在settings.py中):

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

之后我要去我的服务器上建立项目的文件夹。我正在激活我的venv并执行以下命令。

python manage.py collectstatic

它在我的项目中创建一个包含所有必要文件的静态文件夹。

问题是使用nginx进行配置。我真的需要它在mysite:9000 不是在mysite:900 /静态或其他东西。我不知道如何配置它。 这就是我尝试过的。

cd /etc/nginx/sites-available/
sudo nano test


server {
        server_name mysite.com;

    access_log off;

    location /static/ {
        alias /path/to/myproject/static/;
    }

    location / {
            proxy_pass http://127.0.0.1:9000;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

比我去了

cd /etc/nginx/sites-enabled 

并执行以下命令并重新启动nginx。

sudo ln -s ../sites-available/myproject

2 个答案:

答案 0 :(得分:1)

您似乎要访问错误的网址。您已将gunicorn配置为在端口9000上运行,但nginx在默认Web端口上作为反向代理运行,这就是它的全部要点。你应该去mysite.com; nginx会将Django应用程序代理为:9000并直接提供资产。

答案 1 :(得分:-1)

使用collectstatic的配置将通过django提供静态文件,因此在http://:9000 / static。

在不同端口上提供文件的最有效方法是直接通过nginx。你可以在nginx.conf中有多个server指令,每个指令都有自己的listen指令。

请参阅https://serverfault.com/questions/242679/how-to-run-multiple-nginx-instances-on-different-port

中的答案