现在,我正在从 app.example.com
迁移我的应用程序域至app.newexample.com
使用以下 nginx
配置:
server {
server_name app.example.com;
location /app/ {
rewrite ^/app/(.*)$ http://app.newexample.com/$1;
}
}
我需要显示一个弹出横幅来通知用户域名迁移。
我想基于
referrer
或 app.newexample.com
上的某种其他标题但是我怎样才能在上面的
rewrite
上附加一个额外的标题这样 javascript 就会检测到该标题并仅在该标题存在时才显示横幅,因为用户直接访问 app.newexample.com
不应该看到那个弹出横幅吗?
最佳答案
问题是,当您“重写”为具有协议(protocol)和主机名的 URI(即 http://app.newexample.com/
在您的情况下)时,Nginx 会发出公平的 HTTP 重定向(我猜代码将是 301 又名“永久重定向”)。这使您只有两种机制可以将任何信息传输到新 URL 的处理程序:
由于您将用户重定向到新域,因此 cookie 是不行的。但即使在公共(public)域的情况下,我也会选择 URL 来传输此类信息,例如
server_name app.example.com;
location /app/ {
rewrite ^/app/(.*)$ http://app.newexample.com/$1?from_old=yes;
}
这使您可以自由地在 Nginx 或浏览器中(使用 JavaScript)进行处理。你甚至可以做你想做的事,在新的应用服务器 Nginx 配置中为 JavaScript 发出一个特殊的 HTTP 头:
server_name app.newexample.com;
location /app {
if ($arg_from_old) {
add_header X-From-Old-Site yes;
}
}
关于nginx - 在 nginx 重写中发送额外的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16505647/