私は、http (および https) を提供する Docker 化されたサービスをいくつか持っています。内部の http ポート (80) は、docker レベルで別のポートにマップされているため、ホスト上でアクセス可能です。そして、これは正常に動作しています:
curl localhost:1234
コンテナ内の http サービスに移動します。
ここで、ポートを指定せずに、DNS 経由でこれにアクセスできるようにしたいと思います (このポート マッピングからクライアントを保護したい)。nginx を使用して、リクエストをhttp://myserver1
->に転送したいと思いますhttp://localhost:1234
。
nginx をそのように設定できますか? 次のように、複数転送用に設定できますか?
http://myserver1 --> http://localhost:1234
http://myserver2 --> http://localhost:1235
...
答え1
はい、できます。
server_nameオプションは、同じnginxサーバーでホストされている異なるサイト間で最適な一致を見つけるために使用されます。
server {
listen 80;
listen [::]:80;
server_name myserver1;
そしてもう一つは
server {
listen 80;
listen [::]:80;
server_name myserver2;
この方法では、ポート80で実行でき、呼び出されたかどうかに応じて一致します。http://myserver1またはhttp://myserver2。
では、どのようにサービスに接続すればいいのでしょうか?アップストリームサービスプロバイダーを次のように定義できます。
#place this outside of the 'server{' block
upstream server1 {
server localhost:1234;
}
そして、
# place this inside the 'server{' block
location / {
proxy_pass http://server1;
}