以下の添付画像は、私が構築しているアプリケーションスタックを表しています。 Apacheノードは互いの正確なレプリカであり、それぞれ同じ仮想ホストに対応しています。たとえば、example1.com、example2.com、example3.comとしましょう。さらに、データベースバックエンドを持つApacheノードが提供する仮想ホストの場合、データベースはGaleraクラスタノードでホストされます。これらのノードはすべてUbuntu 16.06を実行しています。Nhostxをvhostsを持つApacheサーバーのロードバランサとして使用する
Nginx Webロードバランサを通じてホスト名を渡すことができないことを除いて、これまでの設定のほとんどを正常に設定することができました。例えば私がexample1.comに行って(そして継続的にリフレッシュする)、私は、アプリケーションが各Apacheノードから交互に提供されていることが分かります。
私がexample2.comに行くと、まだexample1.comが表示されます。これは私のローカル/etc/hosts
ファイルの問題ではありません。私は、NginxロードバランサがApacheノードによって解釈されるようにホスト名を渡すように正しく設定していないためだと思います。ここで
sites-enabled
#/etc/nginx/sites-enabled/example1.dev
upstream example1 {
least_conn;
server do.webserver1:80;
server do.webserver2:80;
}
server {
listen 80;
server_name example1.dev;
location/{
proxy_pass http://example1;
}
}
#/etc/nginx/sites-enabled/example2.dev
upstream example2 {
least_conn;
server do.webserver1:80;
server do.webserver2:80;
}
server {
listen 80;
server_name example2.dev;
location/{
proxy_pass http://example2;
}
}
#/etc/nginx/sites-enabled/example3.dev
upstream example3 {
least_conn;
server do.webserver1:80;
server do.webserver2:80;
}
server {
listen 80;
server_name example3.dev;
location/{
proxy_pass http://example3;
}
}
にリンクされ、ここにいる私の3 nginxのサーバーのブロックです:Apacheのバーチャルホストの設定は、前に正常に働いていた
#/etc/apache2/sites-available/example1.dev.conf
<VirtualHost *:80>
ServerName example1.dev
ServerAlias www.example1.dev
ServerAdmin [email protected]
DocumentRoot /var/www/example1.dev/public_html
ErrorLog /var/www/example1.dev/error.log
LogLevel warn
CustomLog /var/www/example1.dev/access.log combined
</VirtualHost>
<Directory "/var/www/html/example1.dev/public_html">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#/etc/apache2/sites-available/example2.dev.conf
<VirtualHost *:80>
ServerName example2.dev
ServerAlias www.example2.dev
ServerAdmin [email protected]
DocumentRoot /var/www/example2.dev/public_html
ErrorLog /var/www/example2.dev/error.log
LogLevel warn
CustomLog /var/www/example2.dev/access.log combined
</VirtualHost>
<Directory "/var/www/html/example2.dev/public_html">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#/etc/apache2/sites-available/example3.dev.conf
<VirtualHost *:80>
ServerName example1.dev
ServerAlias www.example3.dev
ServerAdmin [email protected]
DocumentRoot /var/www/example3.dev/public_html
ErrorLog /var/www/example3.dev/error.log
LogLevel warn
CustomLog /var/www/example3.dev/access.log combined
</VirtualHost>
<Directory "/var/www/html/example3.dev/public_html">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
私はNginx loadbalancerを追加しました。これらはすべてリンクされていますsites-enabled
私の推測は、この場合のリクエストをどう処理するかを認識しないと、Apacheが最初にサイト対応をロードするためです。そうですか?
私は通常、ウェブ/モバイルアプリケーションの開発者ですが、私は最近、devオペレーション、サイトの信頼性、オーケストレーション/オートメーションに没頭しています。これは私がテストしている最初のプロジェクトです。
誰でも私にこれをどうやってできるかについていくつかの洞察を与えることができますか?事前にありがとう!