根据域名的Nginx代理

根据域名的Nginx代理

我正在使用带有 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 实例,但那毫无意义。

相关内容