サーバー名による Nginx 転送

サーバー名による Nginx 転送

私は、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;
}

関連情報