如何使用NGINX重定向到不同的域?

deb*_*deb 124 redirect nginx vhosts

我如何可以重定向mydomain.com任何子域*.mydomain.com,以www.adifferentdomain.com使用NGINX?

kol*_*ack 255

server_name支持使用.mydomain.com语法的后缀匹配:

server {
  server_name .mydomain.com;
  rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
Run Code Online (Sandbox Code Playgroud)

或任何版本0.9.1或更高版本:

server {
  server_name .mydomain.com;
  return 301 http://www.adifferentdomain.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

  • `rewrite`和`return 301 $ scheme://www.adifferentdomain.com$request_uri;`之间有什么区别? (5认同)
  • 的?在重写结束时告诉nginx不要附加原始查询字符串.由于`$ request_uri`已经有查询字符串,因此无需再次附加它.`return 301`语法是新的,两种方法之间的行为应该没有区别,但是当我最初回答这个问题时,许多发行版都没有所需的版本,所以我采用了更安全的语法. (5认同)
  • @Ryan 如果未指定,“listen”指令默认为端口 80。它实际上比一般情况要复杂一些;有关更多详细信息,请参阅 [nginx 配置文档](http://wiki.nginx.org/HttpCoreModule#Directives)。 (2认同)
  • `?`最终实现了什么? (2认同)

Tec*_*ech 23

我正在为我的网站使用此代码

server {
        listen 80;
        listen 443;
        server_name  .domain.example;

        return 301 $scheme://newdomain.example$request_uri;
}
Run Code Online (Sandbox Code Playgroud)


Ser*_*kyi 22

server {
    server_name .mydomain.com;
    return 301 http://www.adifferentdomain.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

http://wiki.nginx.org/HttpRewriteModule#return

http://wiki.nginx.org/Pitfalls#Taxing_Rewrites


Rob*_*len 14

如果可以,为什么要使用重写模块return?从技术上讲,它return是重写模块的一部分,你可以在这里阅读,但这个片段更容易阅读imho.

server {
    server_name  .domain.com;

    return 302 $scheme://forwarded-domain.com;
}
Run Code Online (Sandbox Code Playgroud)

你也可以给它301重定向.

  • 没有这个例子不能做到这一点@Mark.但我想你可以把以前的答案混淆起来得出类似的结果:`return 302 $ scheme://forwarded-domain.com$request_uri;` (3认同)

udo*_*udo 11

这应该通过HTTPRewriteModule工作.

从www.example.com到example.com的重写示例:

server {    
    server_name www.example.com;    
    rewrite ^ http://example.com$request_uri? permanent; 
}
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您想将"domain1.com"的请求重定向到"domain2.com",您可以创建一个如下所示的服务器块:

server {
    listen 80;
    server_name domain1.com;
    return 301 $scheme://domain2.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)


cry*_*KTM 6

您可以简单地在 server {} 块中编写 if 条件:

server {

    if ($host = mydomain.example) {
        return 301 http://www.adifferentdomain.example;
    }
}
Run Code Online (Sandbox Code Playgroud)