2016-06-27 6 views
0

私はマイクロサービス哲学を持ったソフトウェアをいくつか持っています。それらのうち - example.com/にホストされていたので、別のサービスがホストされているexample.com/dir/にリダイレクトされるようになりました。 StackOverflow上で最も人気のある解決策は、設定ファイルに次のコードを使用することです:example.com/からhttps://www.example.com/dir/への恒久リダイレクト

location =/{ 
    return 301 $scheme://$http_host/dir/; 
} 

または

location =/{ 
    return 301 https://$http_host/dir/; 
} 

彼らの両方が私のサーバー上で失敗する - サーバが503 - to many computationsを返します。 stacktraceはルール無限ルールがないことを示しているので、このコードはload-balancerによって返される可能性があります。

他にもこの問題の解決策はありますか? StackOverflowServerFaultは、私が最後の3日間慎重に検索し、解決策が働いています。

答えて

0

チームメイトと一緒に研究した後、succesfulyがユーザーをリダイレクトreturn 301 url;だけでなく、発生しました。ドキュメントが働いたものrewriteを使用しないよう言うものの:

server { 
    ... 
    rewrite ^/$ https://$http_host/dir/ permantent; 
    ... 
} 

permantent文は、通常のリダイレクトとして動作する責任があります。

重要:nginxの^ は、正規表現のとincomming文字列の初めであると$記号はtheEndOfStringの略で、通常のregexサインです。だから正規表現^/$は、iffのURLが/と等しいことを意味します。

クレジット:

うまくいけば、これは自分の週末、時間とお金を節約します。

-2

=記号が無効です。

location/{ 
    return 301 https://$http_host/dir/; 
} 

しかし、それはとても具体的に、リダイレクトループに終了します:

location ~ ^[/]?$ { 
    return 301 https://$http_host/dir/; 
} 
+0

「=」記号は一致が正確でなければならないことを意味します。 Googleのドキュメント。 – xenteros

+0

私は訂正しました。 –

+0

あなたの正規表現は/ dir /にもマッチします。各URLはリダイレクトされます。あなたの答えは、他の同様のトピックからコピーされます。 – xenteros

関連する問題