我正在使用带有 Nginx 的 AWS EC2。
假设我有三个域名:domain1.com、domain2.com、domain3.com。假设我在三个不同的端口上有三个 rails 应用程序:3000、3001、3002。
所有这些域名都链接到我的服务器的 80 端口。
根据请求的 URL,我希望我的端口 80 将请求重定向到正确的端口。
我应该如何配置我的虚拟主机文件?我知道 If 块存在,但 Nginx 似乎不推荐它。我的计划是在我的 EC2 上拥有多个站点。
我无法在我的 Rails 应用程序端口上阻止服务器,因为它会阻止 Rails 服务器。
答案1
取决于领域(?):
server {
listen 80;
server_name .domain1.com; # Wildcard domain
return 301 $scheme://$host:3000$request_uri;
# use $host above because we use a wildcard domain
}
并对所有域和所有 Rails 应用/端口重复此服务器块
答案2
您说过您希望您的站点位于不同的端口上,并且希望它们链接到端口 80。这并不清楚。
Nginx 可以在端口 80 上监听不同的网站,您只需为其配置不同的域名即可。例如
server {
server_name www.example.com;
listen 80;
return 301 https://www.example.com$request_uri;
}
server {
server_name www.example.com;
listen 443 ssl https;
root /var/www/site;
// Insert https stuff here
}
server {
server_name www.example2.com;
listen 80;
root /var/www/site2;
}
server {
server_name www.example3.com;
listen 80;
root /var/www/site3;
}
您还可以运行负载均衡器和多个 nginx 实例,但那毫无意义。