nginxロードバランシング構成でこの問題が発生しました。ロードバランシングサーバーはバックエンドサーバーに転送したくありません。
次のようにサーバー構成を設定しました。
Hostname ip_address role
nginx-node1.phann.net 172.17.45.103 nginx webserver
nginx-node2.phann.net 172.17.45.107 nginx webserver
nginx-node3.phann.net 172.17.45.108 nginx webserver
phann.net 172.17.45.113 load balancer
私のロードバランサーの設定は "/etc/nginx/conf.d/load-balancer.conf」、使用vhost
、次のように書かれています。
upstream website {
server nginx-node1.phann.net;
server nginx-node2.phann.net;
server nginx-node3.phann.net;
}
server {
listen 80; # Listen on the external interface
location / {
proxy_pass http://website;
}
}
しかもPHPの有効化すべてのサーバーで。私の設定は良好で、エラーはありません。
代替構成では、ホスト名をIPアドレスに変更しました。
upstream website {
server 172.17.45.103;
server 172.17.45.107;
server 172.17.45.108;
}
server {
listen 80; # Listen on the external interface
location / {
proxy_pass http://website;
}
}
最後に、ロードバランシングサーバーをテストすると、常にnginxのデフォルトのWebページが表示され、ノード3までノード1に渡されません。しかし、すべてが正しいことを確認しました。私の構成のどの部分が欠けているか間違っているか知りたいです。多くの研究をしましたが、まだ理由を理解していません。」上流「動作しません。
次のチュートリアルを使用しています。 http://www.itadminstrator.com/2017/07/how-to-configure-nginx-load-balancer-on.html?showComment=1516785023396
答え1
NGinxロードバランサーが正しく構成されています。
問題は、DNSとNGinxから名前を取得できない、または少なくとも他のLinuxアプリケーションと同様に、DNSソルバーでデフォルトで名前を取得できないことですproxy_pass
。/etc/hosts
バラよりProxy_passは、DNSを検証するために/ etc / hostsを使用しません。
仮想ホストを扱わない場合、このリンクで提案されているより簡単な一時的な解決策は、NGinx設定でFQDNの代わりにIPアドレスを使用することです。
答え2
これが答えなので、質問から抽出されました。
それから問題を発見しました。デフォルトでは出てくるので、/etc/nginx/nginx.conf
スクリプトには二重定義がありますserver {..}
。
スクリプトの文を実行できるようにするには、server {..}
スクリプトを削除またはコメントアウトする必要があります。/etc/nginx/nginx.conf
server {..}
/etc/nginx/conf.d/load-balancer.conf