我正在寻找一种方法在同一个 ECS 实例上的顶级域上运行两个网站。我是阿里云的新手,正在寻找实现这一目标的最佳选择
问问题
402 次
2 回答
0
这取决于您需要的操作系统(windows/linux)和网络服务器(apache/nginx)。对于我使用 NGINX 网络服务器和 Ubuntu 网络服务器的经验,以下是步骤:
- 通过使用每个 DNS Manager 映射 A 记录,将每个 dns(example1.com、example2.com 等)指向您的 IP 公有 ECS 实例。如果您使用的是阿里巴巴 dns 管理器,以下是示例。
- 通过在 ECS 的附加安全组中添加规则,确保打开将用于 Web 应用程序的端口(通常为 80 或 443)
- 安装您的应用程序(无论您使用的是 PHP、Django、Nodejs 等,都有很多变化)
- 在 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;
}
}
- 在 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
有不同的方法可以做到这一点,
- 子文件夹(“example.com/web1”、“example.com/web2”、“example.com/web3”)
- 基于端口的虚拟主机(“example.com:80”、“example.com:8080”、“example.com:8181”)
- 子域(“web1.example.com”、“web2.example.com”、“web3.example.com”)
- 基于名称的虚拟主机(“web1.com”、“web2.com”、“web3.com”)
在执行此操作之前,您需要将顶级域 DNS 'A' 记录映射到 ECS 实例公网 IP。现在你有两种方法可以做到这一点。
一种方法是您只创建一个站点,该站点具有两者的内容,并通过使用请求中的 HTTP 标头识别主机来提供您想要的页面,但这会使您的信息暴露给用户。这种方法并不安全。
另一种更好的方法是将网站容器化并使用反向代理来映射网站。
这里提到的更详细的步骤:
谢谢
于 2018-06-22T19:05:09.927 回答