添加参数的nginx域转发

添加参数的nginx域转发,nginx,configuration,dns,server,devops,Nginx,Configuration,Dns,Server,Devops,我现在一直在nginx上遇到一个奇怪的问题。我有两台nginx服务器,一台托管我想转发到另一台服务器的内容。正在进行转发的站点已启用以下配置: server { listen 80; server_name pastdomain.com; return 301 https://domain.com$request_uri?from_past_domain=true; } server { listen 443; server_name pastdomain.com; r

我现在一直在nginx上遇到一个奇怪的问题。我有两台nginx服务器,一台托管我想转发到另一台服务器的内容。正在进行转发的站点已启用以下配置:

server {
  listen 80;
  server_name pastdomain.com;
  return 301 https://domain.com$request_uri?from_past_domain=true;
}

server {
  listen 443;
  server_name pastdomain.com;
  return 301 https://domain.com$request_uri?from_past_domain=true;

 # bunch of ssl config here
}
基本上,我希望将所有流量发送到新服务器,在那里可以使用来自_pass_域的新get变量进行解释,我可以根据需要在新服务器上进行解释

即。 pastdomain.com/thing/thing1/1/

会转化为

domain.com/thing/thing1/1?from\u pass\u domain=true

现在它似乎正在工作,除了我刚刚访问pastdomain.com的情况

而是从_pass_domain=true获取domain.com/

这是不正确的。此外,它没有正确添加新的get参数

也就是说,如果我有pastdomain.com?test=1和test2=2,它将从\u pass\u domain=true转发到domain.com/?test=1和test2=2

如何才能正确转发此内容?

如果要更改URI,应使用。在这种情况下,nginx将处理正确的请求参数

此外,您还可以使用HTTP和HTTPS

server {
  listen 80;
  listen 443 ssl;
  server_name pastdomain.com;

  rewrite ^(.*)$ https://domain.com$1?from_past_domain=true permanent;

  # bunch of ssl config here
  # DO NOT use `ssl on;`
}
它已被弃用。改用listen指令的ssl标志。