0

我正在寻找一种方法在同一个 ECS 实例上的顶级域上运行两个网站。我是阿里云的新手,正在寻找实现这一目标的最佳选择

4

2 回答 2

0

这取决于您需要的操作系统(windows/linux)和网络服务器(apache/nginx)。对于我使用 NGINX 网络服务器和 Ubuntu 网络服务器的经验,以下是步骤:

  1. 通过使用每个 DNS Manager 映射 A 记录,将每个 dns(example1.com、example2.com 等)指向您的 IP 公有 ECS 实例。如果您使用的是阿里巴巴 dns 管理器,以下是示例。
  2. 通过在 ECS 的附加安全组中添加规则,确保打开将用于 Web 应用程序的端口(通常为 80 或 443)
  3. 安装您的应用程序(无论您使用的是 PHP、Django、Nodejs 等,都有很多变化)
  4. 在 Nginx 中配置第一个 web,这里是使用端口 80 的 django 应用程序的简单示例,应用程序已经安装并绑定到套接字文件:

sudo nano /etc/nginx/site-enabled/example1

upstream example1 {
    server unix:/run/uwsgi/exampple1.sock;
}
server {
    listen 80;
    server_name example1.com;
    charset     utf-8;
    client_max_body_size 75M;

    access_log /var/log/example1/example1.nginx.access.log;
    error_log /var/log/example1/example1.nginx.error.log;

    location /media  {
            alias /opt/apps/example1/files/media;
    }

    location /static {
            alias /opt/apps/example1/files/static-collected;
    }

    location / {
            uwsgi_pass example1;
            include uwsgi_params;
    }
}
  1. 在 Nginx 中配置第二个 Web,这是使用端口 80 的 PHP 应用程序的简单示例:

sudo nano /etc/nginx/site-enabled/example2

server {
    listen 80;
    server_name example2.com;
    charset     utf-8;
    client_max_body_size 75M;

    access_log /var/log/example2/example2.nginx.access.log;
    error_log /var/log/example2/example2.nginx.error.log;

    root /opt/apps/example2; # YOUR LOCATION WEB RESOURCES
    index index.php index.html index.htm index.nginx-debian.html;

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

    location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
       deny all;
    }
}
于 2020-08-08T10:06:54.650 回答
0

有不同的方法可以做到这一点,

  1. 子文件夹(“example.com/web1”、“example.com/web2”、“example.com/web3”)
  2. 基于端口的虚拟主机(“example.com:80”、“example.com:8080”、“example.com:8181”)
  3. 子域(“web1.example.com”、“web2.example.com”、“web3.example.com”)
  4. 基于名称的虚拟主机(“web1.com”、“web2.com”、“web3.com”)

在执行此操作之前,您需要将顶级域 DNS 'A' 记录映射到 ECS 实例公网 IP。现在你有两种方法可以做到这一点。

一种方法是您只创建一个站点,该站点具有两者的内容,并通过使用请求中的 HTTP 标头识别主机来提供您想要的页面,但这会使您的信息暴露给用户。这种方法并不安全。

另一种更好的方法是将网站容器化并使用反向代理来映射网站。

这里提到的更详细的步骤:

https://www.alibabacloud.com/blog/hosting-multiple-websites-on-a-single-alibaba-cloud-ecs-server-the-devops-way_593711

谢谢

于 2018-06-22T19:05:09.927 回答