2017-04-13 4 views
1

私は、第2ブランドのWebアプリケーションを最初のブランドに崩壊させ、残っているトラフィックをリダイレクトするために301リダイレクトを使用しています。301リダイレクト時にnginxポート番号を維持する

代わりのhttps://local-dev-url:8001/foo/(anything)https://local-dev-url:8001/admin/(anything)https://local-dev-url:8001/(anything)

代わりのhttps://local-dev-url:8001/adminfoo/(anything) 301に:サーバーは、私が持っていると思いポート8001に転送ベイグラントボックスで実行されています。ここで

は、私が持っているものだ。しかし

location ~ /foo/?(.*)$ { 
     return 301 $1/; 
    } 

    location ~ /adminfoo/?(.*)$ { 
     return 301 admin/$1/; 
    } 

    location/{ 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Port 443; 
     proxy_set_header Authorization $http_authorization; 
     proxy_set_header X-Scheme $scheme; 
     proxy_pass http://127.0.0.1:5000; 
     proxy_redirect http:// $scheme://; 
    } 

    location /admin/ { 
     alias /hostonly/path/to/admin/stuff/; 
    } 

、代わりにそれはその代わりhttps://local-dev-url//に301ingさhttps://local-dev-url:8001/https://local-dev-url:8001/foo/をリダイレクトします。 (ポート番号、余分なスラッシュはありません)私はリダイレクトのURLをハードコードする答えを見たことがありますが、私は多くの他の開発者と協力しており、すべてが一意のローカル開発者URLを持っているので、 8001ポート番号。

必要に応じて301を設定する方法はありますか?

+0

このサーバはどのポートをリッスンしていますか?あなたは8001を80に転送していますか? –

+0

@リチャードスミスポート443、80ではなく。 –

答えて

2

nginxがポート8001でリッスンしていない場合、リダイレクトで使用するポートを認識できません。あなたは明示的に指定する必要があります。

location ~ /foo(.*)$ { 
    return 301 $scheme://$http_host$1; 
} 
location ~ /adminfoo(.*)$ { 
    return 301 $scheme://$http_host/admin$1; 
} 

$http_host変数は、元の要求からのホスト名とポートで構成されています。詳細は、this documentを参照してください。

関連する問題