如何使用 gunicorn 为 django 配置 nginx?

Posted

技术标签:

【中文标题】如何使用 gunicorn 为 django 配置 nginx?【英文标题】:How to configure nginx for django with gunicorn? 【发布时间】:2017-02-23 21:57:54 【问题描述】:

我已成功运行 gunicorn 并确认我的网站在 localhost:8000 上运行。但我无法正确使用 nginx。我的配置文件是这样的:

    server 
    listen 80;
    server_name 104.224.149.42;
    location / 
        proxy_pass http://127.0.0.1:8000;
        
    

104.224.149.42是外界的ip。

【问题讨论】:

究竟是什么不正常?你有什么具体的错误吗? 你检查过Nginx的配置文件吗?您可以强制 nginx 使用以下命令检查您的设置文件: nginx -t -c /path/to/configuration/file.conf @PanchoJay 该命令非常有用,并给出如下错误消息:[emerg] "server" directive is not allowed.然后在谷歌搜索后,我添加了 http 标签来包含服务器标签并收到错误消息:[emerg] no "events" section in configuration。可能我应该查看文档。 @Borg 我认为您将设置放在不正确的文件中。您粘贴的代码应该放在站点配置文件中,而不是放在 nginx.conf 中。您是否使用了教程或指南? @PanchoJay 我搞定了。即使所有在线教程都建议从可用的站点链接配置文件,启用站点的软链接似乎也不起作用。复制效果很好! 【参考方案1】:

这样做

/etc/nginx/sites-enabled/default 中删除default

创建/etc/nginx/sites-available/my.conf 并关注

server 
listen 80;
server_name 104.224.149.42;
location / 
    proxy_pass http://127.0.0.1:8000;
    

然后sudo ln -s /etc/nginx/sites-available/my.conf /etc/nginx/sites-enabled/my.conf

重启nginx

您必须配置static 文件和media 文件服务。

【讨论】:

完全删除默认站点配置不是一个好主意。只需从启用的站点中删除默认设置即可。

以上是关于如何使用 gunicorn 为 django 配置 nginx?的主要内容,如果未能解决你的问题,请参考以下文章

如何运行多个Django App Gunicorn systemd?

68. Django项目部署nginx + gunicorn

在 Heroku 上为 Django 配置 gunicorn

Django中配置Gunicorn

django+nginx+gunicorn+supervisro部署

VMware+CentOS+Apache+php+python+Django+gunicorn配置