Nginx 重定向到另一个域名无法按预期工作

Nginx 重定向到另一个域名无法按预期工作

我有一个带有 nginx 和 puma 的 rails 应用程序,该 rails 应用程序响应

app.example.org

我需要重定向https://www.example.orghttps://example.org另一个域名

我在 nginx 配置中有这个块来重定向

server {
  server_name www.example.org;
  return 301 https://www.redirectdomain.com/$request_uri;
}

这是应用程序的块

server {
  listen 80;
  listen [::]:80;
  server_name app.example.org;
  return 301 https://app.example.org$request_uri;
}


server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  ssl_certificate /etc/letsencrypt/live/app.example.org/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/app.example.org/privkey.pem;
  server_name app.example.org;
  root /home/deploy/apps/example_production/current/public;
  try_files $uri/index.html $uri @puma_app.example.org;
}

重定向不起作用:如果我使用www.example.org它重定向到app.example.org而不是https://www.redirectdomain.com

为什么?

答案1

www.example.org块中,您没有监听任何端口,因此它基本上被忽略。

它遇到的下一个块是app.example.org配置为监听端口 80 上的请求的块。

在您的 DNS 设置中,您有一个 CNAME 或 A/AAAA 记录,指向www.example.orgapp.example.org一个 nginx 实例的请求。

这意味着,它不会重定向来自www.example.org->的请求app.example.org。这只是由于您的配置中的错误而发生的。

在块中添加一个listen语句www.example.org它就应该可以工作了。

相关内容