Como redirecionar solicitações para um domínio / url diferente com nginx

4

Estou tentando redirecionar todos os usuários que chegam a um URL " link " para um URL como " link ".

Estou tentando com código assim:

server {
  listen 1.2.3.4:80;
  server_name "example.com";
  rewrite ^(.*) http://answares.com/examples_com$1 permanent;
}

Ao acessar o link ", sou redirecionado para o link ", mas acessando" link "Eu fui redirecionado para:" link ".

Eu tentei fazer isso de formas diferentes, mas o melhor que consegui foi:

http://answares.com/examples_com//something

Que por causa das duas barras parece coxo. Estou usando o Nginx 0.7.65 no Ubuntu 10.4

    
por user93656 03.09.2011 / 21:40

4 respostas

1

A maneira mais rápida é fazer um return em vez de uma reescrita. veja aqui:

redirecionamento nginx para www.domain

Acabei de responder à pergunta relacionada e apresentei esta.

    
por 24.04.2013 / 06:19
8

Se você quiser apenas redirecionar /something e nenhum outro URL, então:

rewrite ^(/something.*) http://answares.com/examples_com$1 permanent;

Isso enviará uma solicitação de http://example.com/something/ para http://answares.com/examples_com/something/

e, digamos, http://example.com/something/somewhere/page.html to http://answares.com/examples_com/something/somewhere/page.html

    
por 03.09.2011 / 21:45
4

Você também pode:

 rewrite ^/(.*)$ http://answares.com/examples_com/$1 permanent;

Isso traz você:

$ curl -I http://xxxxx.com/some/example/url/here.html

HTTP/1.1 301 Moved Permanently
Server: nginx/0.8.53
Date: Mon, 05 Sep 2011 13:48:23 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://answares.com/examples_com/some/example/url/here.html

ou

rewrite ^(/.*)$ http://answares.com/examples_com$1 permanent;

Você pode ver que isso também funciona:

$ curl -I http://xxxxxx.com/some/example/url/here.html

HTTP/1.1 301 Moved Permanently
Server: nginx/0.8.53
Date: Mon, 05 Sep 2011 13:47:09 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://answares.com/examples_com/some/example/url/here.html

A diferença entre redirecionamentos nginx e mod_rewrite é que nginx não remove a barra (/) após o nome do servidor antes de combinar.

Para remover as barras duplas, você deve primeiro combinar a barra na expressão regular entre os parênteses e depois aplicar a correspondência; ou combinar tudo e aplicar a partida sem parênteses. Usar de um jeito ou de outro é apenas uma questão de gosto; -)

    
por 05.09.2011 / 15:53
0

Se você estiver usando o NGINX com http2, os IPs poderão suportar mais de um certificado SSL. Crie uma configuração para o domínio antigo e use seu SSL válido redirecionando para o novo domínio.

Neste exemplo, estou redirecionando http e https separadamente usando um redirecionamento 301 permanente para o novo domínio; -)

Certifique-se de alterar o bloco SSL para o seu próprio certificado SSL e configurações.

server {

   listen 80;
   server_name old-domain.com;

   location / {
    return 301 https://new-domain.com;
   }

}
server {
    listen 443 ssl http2;
    server_name old-domain.com;

    ssl on;

    #Certificate here
    ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;t
    ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;

    ssl_session_timeout 5m;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AES128:AES256:RC4-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK;

    location / {
        return 301 https://new-domain.com;
    }

}

Isso evitará avisos de privacidade sobre certificados SSL incompatíveis durante o redirecionamento.

    
por 10.05.2018 / 16:11