特定のポートに関連付けられたWebサービスを特定のサブドメインに関連付ける

やりたいことは、今まで

http://sample.com:1234/
http://sample.com:8888/

にてアクセス可能であったWebサービスに、当該Webサービス自体を修正せずに、それぞれ

http://service0.sample.com/
http://service1.sample.com/

にてアクセス可能なようにすることです。

以下に説明するように、nginxのバーチャルホスト+リバースプロキシの機能を利用することにより、実現することができました。

前提

  • Webサービスを提供するホストとnginxが稼働するホストとは同一。
  • 当該ホストのOSはDebian系のLinuxaptが利用できるということ。)。

nginx

まずは、nginxをインストールします。

sudo apt install nginx

次に、以下のような内容の設定ファイルを作成します。 この設定ファイルは/etc/nginx/conf.d/に作成する必要があり、ここでは/etc/nginx/conf.d/sample.confであるものとします。

server {
    listen 80;
    server_name service0.sample.com;

    location / {
        proxy_pass http://localhost:1234;
    }
}

server {
    listen 80;
    server_name service1.sample.com;

    location / {
        proxy_pass http://localhost:8888;
    }
}

最後に、設定を反映させるべく、nginxを再起動します。

sudo systemctl restart nginx

DNS

忘れずに、service0.example.com及びservice1.example.comの名前解決ができるようにDNSを設定します。 DNSの設定については省略。