2017-03-29 13 views
0

ここに投稿するのは初めてのことですが、私の問題を手伝ってくれることを願っています。NGINX要求を変更するuri

シナリオ:locationディレクティブとproxy_passディレクティブを使用して、nginxで複数のWebサイトをホストしたいとします。たとえば、www.webserver1.comとwww.webserver2.comという2つの外部Webサーバーがあります。私nginx.confで

server { 
    listen 80; 
    server_name my.nginx.proxy; 

    location /webserver1 { 
    proxy_pass http://www.webserver1.com/; 
    } 

    location /webserver2 { 
    proxy_pass http://www.webserver2.com/; 
    } 
} 

私のウェブサーバが応答しているが、外部のWebサーバに要求するときの位置指令でURIが追加されます。例えば、私は私のクライアントのブラウザ経由でアクセスした場合

my.nginx.proxy/webserver1

要求は場合

http://www.webserver1.com/webserver1

に渡され、/webserver1は存在しないため、HTTPエラー404がWebサーバーから返されます。私はちょうど/ webserver1 URIなしhttp://www.webserver1.comにリダイレクトされるようにしたいが、私のクライアントのブラウザにURLをあなたは基本的に右のそれをやっている

my.nginx.proxy/webserver1

答えて

0

として示されているが、おそらくnginxのあなたのバージョンは< 1.1.12です。バージョン1.1.12の前に

proxy_passがURIなしで指定されている場合、 元のリクエストURIは いくつかのケースで変更URIの代わりに渡されることがあります。

これは、proxy_passパラメータにurl(/)を指定すると、リクエストからの場所の削除を有効にしたことになります。

location /webserver1 { 
    # trailing slash at end of url should replace /webserver1 with/
    # if your version of nginx is > 1.1.12 
    proxy_pass http://www.webserver1.com/; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection 'upgrade'; 
    # If you want to pass the original host name (my.nginx.proxy) up to 
    # webserver1, you can set the Host header. 
    proxy_set_header Host $host; 
    proxy_cache_bypass $http_upgrade; 
    } 

nginxを更新してみてください。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html?#proxy_pass

関連する問題