AWS Route53 + Nginx + Django,使用 CNAME 托管 2 个应用程序

问题描述 投票:0回答:2

我正在尝试在 aws EC2 实例中托管 2 个应用程序。 我正在使用 dockerlized nginx、django。 这 2 个应用程序是 2 个独立的 django 容器。 我添加了记录

Record A => www.main.com XXX.XXX.XXX.XXX
Record CNAME => www.aap2.main.com www.main.com

现在,我应该如何配置 Nginx 以便 如果用户使用 URL www.main.com 访问,则由 app1 提供服务 如果用户使用 URL www.aap2.main.com 访问,则由 app2 提供服务?

我还可以使用我在 www.main.com 获得的 SSL 证书吗?

我尝试使用 nginx.conf 文件,但到目前为止还没有运气。

django nginx amazon-ec2 amazon-route53
2个回答
1
投票

您可以代理通行流量。

server {
  listen         80;
  server_name    www.main.com;
    location / {
      proxy_pass  http://<main app container name or ip>:<main app container port>;
   }
}

server {
  listen         80;
  server_name    www.aap2.main.com;
    location / {
      proxy_pass  http://<aap2 container name or IP>:<aap2 container port>;
   }
}

nginx 将侦听两个应用程序的端口

80
,并根据主机名路由流量。您可以根据需要更改监听端口。您需要使用
--name
启动容器,并使用
--link <connected container>
启动 nginx,以使用 nginx conf 中的容器名称。


-2
投票

您必须使用两个服务器块,并且必须为两个网站使用两个不同的端口,因为您不能在同一端口上运行两个不同的网站。假设您希望在同一台 ec2 实例服务器上托管域一和域二,以便您可以将端口 8000 用于域一,将端口 8001 用于域二。

另外不要忘记将 ec2 实例服务器 IP 指向您的域。正如你所说,你已经做到了,但在这里我也想向其他人解释一下,以便他们可以学习:

您需要将服务器的IP地址指向yourdomain.com和www yourdomain.com。如果您没有设置 www 版本,人们使用 www 搜索时将无法找到您的网站。

转到您的域 DNS 设置

用于设置 yourdomain.com 的配置

选择一条记录,然后将

@
作为主机名,然后将服务器 IP 放入值字段中

设置 www 版本的配置

选择一条记录,然后将 www 作为主机名,然后将服务器 IP 放入值字段中

在同一服务器上托管两个独立域的 Nginx 配置:

server {
     listen 8000;
     listen [::]:8000;
     server_name domain-one.com www.domain-one.com;

     root /var/www/domain-one.com/html;

     index index.html index.htm;

     location / {
          try_files $uri $uri/ =404;
     }
}


server {
     listen 8001;
     listen [::]:8001;
     server_name domain-two.com www.domain-two.com;

     root /var/www/domain-two.com/html;

     index index.html index.htm;

     location / {
          try_files $uri $uri/ =404;
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.