我有一个带有 nginx 和 puma 的 rails 应用程序,该 rails 应用程序响应
app.example.org
我需要重定向https://www.example.org
到https://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.org
同app.example.org
一个 nginx 实例的请求。
这意味着,它不会重定向来自www.example.org
->的请求app.example.org
。这只是由于您的配置中的错误而发生的。
在块中添加一个listen
语句www.example.org
它就应该可以工作了。