2017-01-09 6 views
0

私はDigital Oceanに2つの液滴を持っています。 nginxと1つのロードバランサとnginxリバースプロキシを持つ1つのノード/エクスプレスウェブサーバ。 load-1とweb-1としましょう。 load-1はSSL終了を処理し、Digital Oceanが提供するプライベートネットワーキングを介してHTTP経由でnginx上流モジュール経由でweb-1に要求を転送します。プライベートネットワーキングによるnginxアップストリーム負荷分散404

公開IP上でweb-1にアクセスするとすべて動作します。 load-1を介してアクセスすると、私は404だけを受け取る。私は、要求が実際に、これはすべてのリクエストに応じてウェブ-​​1のショーのためのnginxのアクセスログは、負荷-1から受信したもので、ウェブ-1に転送されていることを確認しました:

負荷1.private.ip - [ Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(GeckoのようなKHTML)> Chrome/55.0.2883.87 Safari/537.36 "

ダイレクトリクエストが動作しているときに転送リクエストが機能しないのはなぜですか? web-1は直接アクセスしたときに動作しているので、load-1からweb-1へのリクエストをどのように転送するかに間違いがなければなりません。

負荷-1上のマイnginxの設定ファイル:

upstream web-servers { 
     server web-1.private.ip; 
    } 

    server { 
     listen 80; 
     listen 443 ssl; 
     server_name mydomain.com; 

     ssl on; 
     ssl_certificate /etc/ssl/mycert.crt; 
     ssl_certificate_key /etc/ssl/mykey.key; 
     ssl_session_cache shared:SSL:20m; 
     ssl_session_timeout 10m; 
     ssl_prefer_server_ciphers on; 
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 

     add_header Strict-Transport-Security "max-age=31536000"; 

     location/{ 
      proxy_pass http://web-servers; 
      proxy_set_header Host $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-Proto $scheme; 
     } 
    } 

ウェブ-1上のマイnginxの設定ファイル:

server { 
     listen 80; 

     server_name web-1.public.ip web-1.private.ip; 

     location/{ 
      proxy_pass http://127.0.0.1:5000; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection 'upgrade'; 
      proxy_set_header Host $host; 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_cache_bypass $http_upgrade; 
     } 
    } 

答えて

0

だけで、ウェブ-1のnginxのは知りません。使用する構成。

Nginx looks at the host header使用するサーバー構成を決定します。 load-1のプロキシ設定でホストをmydomain.comに設定していますが、web-1にはmydomain.comの対応するエントリはありません。

いずれ

  • ので、これが唯一のブロックである任意の他のserverブロックを削除(listen 80 default_server;からlisten 80;ディレクティブを変更することにより)、ウェブ1にdefault_serverフラグを設定

    1. は(としてそれを治療するためにnginxのを引き起こします:デフォルトのサーバー)
    2. は、私はすべての3つの可能な解決策を試してみましたserver_nameリスト
  • +0

    mydomain.comを追加します 1. default_serverは設定エラーを返しました 2.サーバブロックが1つしかないので、何も削除できませんでした。 3. web-1 nginx config server_nameにload-1ドメイン/ IPを追加しました。 私は、web-1がそれ自体のIPではなく公衆負荷1のIP /ドメインで「ブロードキャスト」すると考えていたことを理解できませんでした。ありがとう! – nidaros

    関連する問題