2016-11-14 9 views
1

Nginxでロードバランシングを計算することに問題があります。私は使用しています: - Ubuntu 16.04と - Nginx 1.10.0。要するにNginxリバースプロキシアップストリームが動作しない

、私は直接「proxy_pass」に私のIPアドレスを渡すとき、プロキシが動作します。

server { 
    location/{ 
      proxy_pass http://01.02.03.04; 
    } 
} 

私は私のプロキシコンピュータにアクセスすると、私はプロキシのIPからのコンテンツを見ることができます... 私は上流のディレクティブを使用する場合、それはしません:

upstream backend { 
    server 01.02.03.04; 
} 

server { 
    location/{ 
      proxy_pass http://backend; 
    } 
} 

私は私のプロキシコンピュータにアクセスすると、私はデフォルトnginxのサーバーのページではなく上流のIPアドレスからのコンテンツで迎えています。

これ以上の援助をいただければ幸いです。私は膨大な研究をしましたが、なぜ "上流"が機能していないのか理解できません。私は何の誤りもありません。それはただプロキシではありません。私は答えを見つけたようにわかりました

+1

アップストリームにポートを指定しようとしましたか? 'server 01.02.03.04:80;' – karliwson

+0

私は、@karliwsonをしました。とても奇妙です。 –

答えて

0

は、見えます...少なくとも上記のシナリオのためのバックエンドサーバについて

二つのこと、IPのaddressses使用:ポートを指定する必要があります

  1. ポートを使用することはできません:80(ポートは80にすることができますが、アップストリームサーバーはリバースプロキシと同じポートをリッスンできません。

バックエンド・サーバ・ブロック(s)は、次のように構成する必要があります。

server { 

    # for your reverse_proxy, *do not* listen to port 80 
    listen 8080; 
    listen [::]:8080; 

    server_name 01.02.03.04; 

    # your other statements below 
    ... 
} 

とリバースプロキシサーバーのブロックは、以下のように構成する必要があります。

upstream backend { 
    server 01.02.03.04:8080; 
} 

server { 
    location/{ 
     proxy_pass http://backend; 
    } 
} 

これは、バックエンドかのように見えますサーバーはリッスンしています:80、リバースプロキシサーバーはコンテンツを表示しません。サーバーは実際には一般の人にデフォルトポート80を使用しているので、意味があると思います。

ありがとう@karliwsonがポートを再考するようにしました。

+1

実際には、アップストリームのポートは80でもかまいませんが、nginxが使用しているメインIPアドレスとは異なるIPでリスンする必要があります。私は、バックエンドがリモートサーバ上にある場合を除いて、ローカルホストで自分のバックエンドをリスニングするようにしています。 – karliwson

関連する問題