在 EC2 上使用 nginx 设置 django

2023-12-02

我正在尝试使用 nginx 运行我的 django 应用程序,但是当尝试连接到我的 EC2 IP 时,我收到“连接超时”错误。当我运行时,它在终端上正确显示 django“默认”页面

curl 127.0.0.1

但 EC2 IP 就不那么幸运了。公共 IP 给我错误 99(无法分配给请求的地址),私有 IP 在我的浏览器中给我“连接超时”消息。

那么我和/或这个 nginx 配置出了什么问题:

user nobody nogroup;
pid /var/run/nginx.pid;
error_log /var/log/nginx/error.log;

events {
    worker_connections  1024;
    accept_mutex: on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log /tmp/nginx.access.log combined;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay         on;
    gzip  on;
    gzip_http_version 1.0;
    gzip_proxied any;
    gzip_min_lenght 500;
    gzip_disable "MSIE [1-6]\.";
    gzip_types text/plain text/xml text/css
         text/comma-separated-values
         text/javascript application/x-javascript
         application/atom+xml;
    include /etc/nginx/sites-enabled/*;
}

这是我启用的网站

upstream app_server {
  server 127.0.0.1:8000 fail_timeout=0;
}

server {
    listen my_IP:80 default;
    client_max_body_size 4G;
    server_name www.my_domain.pl my_domain.pl;
    keepalive_timeout 5;
    root /home/ubuntu/webapps/my_app;

  location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      if (!-f $request_filename) {
        proxy_pass http://app_server;
        break;
      }
  }
  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /path/to/app/current/public;

我需要将最后一行更改为其他内容吗?或者这个 proxy_pass 的东西?


我使用 Nginx 和 Gunicorn 在 EC2 上创建了 Django 站点,这些是我遵循的步骤

easy_install gunicorn
apt-get install nginx

nano /etc/init/site1.conf 并添加

description "site1 web server"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /home/scripts/gunicorn_runserver.sh

并在gunicorn_runserver.sh中

#!/bin/bash
  set -e
  LOGFILE=/var/log/nginx/site1.log
  NUM_WORKERS=10
  # user/group to run as
  USER=www-data
  GROUP=adm
  cd /home/projects/project_name/
#  source ../../bin/activate
  exec gunicorn_django -w $NUM_WORKERS \
    --user=$USER --group=$GROUP --log-level=error \
    --log-file=$LOGFILE 2>>$LOGFILE

并在 Nginxconf 中

upstream app_server_site1 {
    server localhost:8000 fail_timeout=0;
}

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

    if (!-f $request_filename) {
            proxy_pass http://app_server_site1;
            break;
    }
}

finally

/etc/init.d/nginx restart
service site1 start

详细描述关于Nginx+Django+Gunicorn here and Nginx+Django+Fcgi here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 EC2 上使用 nginx 设置 django 的相关文章

  • 基于连接表的 Django 过滤器

    我有两张桌子 class Client models Model name models TextField lastname models TextField class Meta managed False db table clien
  • Django 营业时间

    我想添加诊所的营业时间 我已经对此进行了调查在 Django 中实现 开放时间 的任何现有解决方案 https stackoverflow com questions 8128143 any existing solution to imp
  • 在 ubuntu 中卸载 python 模块

    我必须删除一个名为 django 的 python 模块 一种流行的模块 因为我安装了错误的版本 1 3 py 2 6 中的 beta 如何卸载这个模块 请解释一下 因为我只在 Windows 中使用过 python 而从未在 Ubuntu
  • 如何去除html源代码中的空格

    我正在使用 django 和 python 在模板文件中 我有一个下拉列表 如下所示 有用 唯一的问题是源 html 代码之间有很多空白 有什么办法可以去除空白吗 谢谢 for lang ele in video languages all
  • “config”脚本存在于系统或 Homebrew 目录之外

    运行 brew doctor 并出现一些错误 我按照此链接中的建议设法解决了路径问题 如何修改 Homebrew 的 PATH https stackoverflow com questions 10343834 homebrew want
  • 将 Django +1.10 与 MongoDB 连接

    在过去的几个月里 有人为 MongoDB 更换了 Django 1 10 中的默认数据库引擎吗 我在谷歌上得到的所有信息都是六四年前的 最常见的结果包括mongodb 引擎这需要Django nonrel 来自 Django 1 5 的一个
  • 无法正确停止我的 AWS EC2 实例

    作为 AWS 新手 我有一个支持我的 Elastic Beanstalk 应用程序的 t2 micro EC2 实例 它是在我将 WAR 文件部署到 Elastic Beanstalk 时创建的 我的 EB 应用程序不需要每天 24 小时运
  • AWS EC2 上的 Wordpress - 分配弹性 IP 后损坏

    所以 我安装了 WordPress 并且运行得很好 我可以通过从实例获得的公共 DNS 访问该站点和 wp admin 但是 一旦我创建了弹性 IP 并将其与实例关联 我就无法再访问 wp admin 并且主页样式表和 JavaScript
  • 具有内联模型的 Django 管理页面加载速度非常慢

    我有一个带有单个内联模型的模型的 Django 管理页面 当内联模型有很多项目 例如 75 个 时 页面加载速度非常慢 大约 30 秒 即使我排除内联模型上的所有字段 让它只渲染名称 情况也是如此 删除内联模型会导致页面加载速度非常快 以秒
  • 在 django vanilla CreateView 上设置当前用户

    我想用当前登录的用户更新我的模型 我正在使用 django vanilla views 为了存储新记录 我尝试使用 CreateView 我不想在表单上显示用户 只需自动更新即可 这是我的模型 class Measurement model
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • AWS beanstalk + Django:502 错误网关 - ModuleNotFoundError:没有名为“应用程序”的模块

    我正在尝试将 Django 项目部署到 Elastic Beanstalk 我正在遵循他们的指南 https docs aws amazon com elasticbeanstalk latest dg create deploy pyth
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • 尝试使用 AWS CLI 运行 ECS 任务时出现资源:内存错误

    我正在尝试使用 AWS ECS 和 docker 设置 CI 我使用 Codeship 作为 CI 工具 但这并不重要 我在 shell 脚本中执行以下步骤 使用我的 Dockerfile 构建镜像 将镜像推送到ECS存储库 将task d
  • Django Widget Media 不起作用

    我需要一个小部件 它应该只显示一个块 因为我将使用 jQuery 添加功能 我试图通过 Widget 的 Media 类包含 javascript 和样式表 但它对我不起作用 这是代码 class StarsWidget Widget Wi
  • 我的本地 Eclipse 可以在 Docker 容器中安装 Access 库吗?

    我有一个用于 Django 开发的 Docker 映像 通过一些 xauthority 文件机制 我在容器内使用 Eclipse 在大多数情况下 Eclipse 运行良好 但存在一些棘手的问题 这些问题似乎与它在容器内运行的事实有关 毕竟
  • 如何使用 Mercurial 将文件夹与现有 Heroku 应用程序链接

    我在 Bitbucket 上有一个现有的 Django 应用程序 我能够部署到 Herokuhg git https stackoverflow com q 9591380 343834 每当我想在应用程序文件夹中运行一些 heroku 命
  • nginx - 使用 ssl 支持设置多个 server_name

    我很想使用 nginx 来为具有多个域名和 SSL 的网站提供服务 webmail example com webmail beispiel de 两者都使用相同的虚拟主机 因此我只设置 server name 两次 问题是 我需要 ngi
  • Django 本身支持迁移吗

    我听说所有新的 Web 框架 如 ROR Django 等 都遵循敏捷和 TDD 的一般原则 遵循敏捷和 TDD 的一部分是在从一个迭代到另一个迭代时制定自己的设计 这意味着模型及其架构将随着应用程序的不同版本而演变 我知道 ROR 本身支
  • django 模板上的 vscode html 自动套用格式

    我喜欢 VSCode 的保存自动格式功能 直到它弄乱了我的模板代码 它错误地将我的 django 模板语法格式化为一行代码 有时非常长的一行 所以不用这段代码 for row in ABCDEFGH tr for col in 123456

随机推荐