Как перенаправить на другой домен с помощью NGINX?


как я могу перенаправить mydomain.com и любой поддомен *.mydomain.com to www.adifferentdomain.com С помощью NGINX?

6 100

6 ответов:

сервер поддерживает суффикс матчи с использованием .mydomain.com синтаксис:

server {
  server_name .mydomain.com;
  rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}

или на любой версии 0.9.1 или выше:

server {
  server_name .mydomain.com;
  return 301 http://www.adifferentdomain.com$request_uri;
}
server {
    server_name .mydomain.com;
    return 301 http://www.adifferentdomain.com$request_uri;
}

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

и

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

Это должно работать через HTTPRewriteModule.

пример переписать из www.example.com к example.com:

server {    
    server_name www.example.com;    
    rewrite ^ http://example.com$request_uri? permanent; 
}

зачем использовать модуль перезаписи, если вы можете сделать return? Технически говоря, return является частью модуля rewrite, как вы можете прочитать здесь но этот фрагмент легче читать имхо.

server {
    server_name  .domain.com;

    return 302 $scheme://forwarded-domain.com;
}

вы также можете дать ему 301 редирект.

Если вы хотите перенаправить запросы на "domain1.com" to "domain2.com", вы можете создать серверный блок, который выглядит следующим образом:

server {
    listen 80;
    server_name domain1.com;
    return 301 $scheme://domain2.com$request_uri;
}

временное перенаправление

rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;

постоянный редирект

rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;

в конфигурационном файле nginx для конкретного сайта:

server {    
    server_name www.example.com;
    rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;

}