在同一ECS实例阿里云上运行2个网站

时间:2018-06-22 17:23:29

标签: alibaba-cloud alibaba-cloud-ecs

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

2 个答案:

答案 0 :(得分: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实例公共Internet IP。现在,您有两种方法可以做到这一点。

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

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

此处提到的更详细的步骤:

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

谢谢

答案 1 :(得分:0)

这取决于您所需的OS(windows / linux)和Web服务器(apache / nginx)。根据我的经验,将NGINX Web服务器与Ubuntu Web服务器一起使用,请按以下步骤操作:

  1. 通过使用每个DNS管理器映射A记录,将每个dns(example1.com,example2.com等)指向您的IP公共ECS实例。如果您使用的是阿里巴巴dns管理器,则以Here为例。
  2. 通过在ECS的附加安全组中添加规则,确保打开要用于Web应用程序的端口(通常为80或443)
  3. 安装您的应用程序(无论您使用的是PHP,Django,Nodejs还是多种版本)
  4. 在Nginx中配置第一个网站,这是使用带有端口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中配置第二个网站,这是使用端口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;
    }
}