web-dev-qa-db-ja.com

nginxを使用してリクエストを別のドメイン/ URLにリダイレクトする方法

http://example.com/something 」のURLにアクセスするすべてのユーザーを「 http://answares.com/examples_com/something」のようなURLにリダイレクトしようとしています "。

私はこのようなコードで試しています:

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

" http://example.com/ "にアクセスすると、 " http://answares.com/examples_com/ "にリダイレクトされますが、 " http://example.com/something "リダイレクトされます:" http://answares.com/something "。

私はさまざまな方法でそれをやろうとしましたが、私が得た最高のものは:

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

スラッシュが2つあるためにどちらが不自然に見えますか。 Ubuntu 10.4でNginx 0.7.65を使用しています

8
user93656

最速の方法は、書き換えの代わりにreturnを実行することです。こちらをご覧ください:

nginxはwww.domainにリダイレクトします

私はリンクされた質問に答えただけで、これにつまずいた。

2
ansi_lumen

/somethingのみをリダイレクトし、他のURLはリダイレクトしない場合は、次のようにします。

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

http://example.com/something/のリクエストがhttp://answares.com/examples_com/something/に送信されます。

そして、例えば、http://example.com/something/somewhere/page.htmlからhttp://answares.com/examples_com/something/somewhere/page.html

14
Shane Madden

次のいずれかを実行できます。

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

それはあなたをもたらします:

$ 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

または

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

あなたはそれがうまくいくのを見ることができます:

$ 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

Nginxリダイレクトとmod_rewriteリダイレクトの違いは、nginxは一致する前にサーバー名の後のスラッシュ(/)を削除しないことです。

持っている二重スラッシュを削除するには、最初に括弧なしで正規表現のスラッシュを一致させてから、一致を適用します。またはすべてに一致し、括弧なしで一致を適用します。何らかの方法で使用することは、好みの問題です;-)

6
Iñigo

NGINXをhttp2で使用している場合-IPは複数のSSL証明書をサポートできます。古いドメインの構成を作成し、新しいドメインにリダイレクトする有効なSSLを使用します。

この例では、永続的な301リダイレクトを使用してhttpとhttpsを別々に新しいドメインにリダイレクトしています;-)

そこでSSLブロックを独自のSSL証明書と設定に変更してください。

 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; 
 
#ここに証明書
 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-RSCM-AES256 -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-AE S256-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; 
} 
 
} 

これにより、リダイレクト中のSSL証明書の不一致に関するプライバシー警告が回避されます。

0