無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

Nginx のリバースプロキシでポート変換する

数カ月前に ASUS X200LA (11.6インチ、Core i3 4010U/1.7GHz/2コア メモリ4GB)を人から譲ってもらったのだが、Ubuntu 20.04 LTS をインストールした後、特に使い道がなかった。

が、ふと思い立って gitlab をインストールして運用することにした。リモートワークでの作業メモなどを gitlab の issue や wiki に書いて記録を残したり、自分用のコードを保存したりしてる。そうこうしていると、ちょっとした他のサービスも運用したくなってきていくつかのサービスを ASUS X200LA にホストしている。

使っている手元のPCの /etc/hosts/ASUS X200LA のホスト名とIPアドレスを追記して使っていたが、各サービスの識別にはポート番号を直打ちしていた。

そうこうしていると、これらのサービスにブラウザがからアクセスするときに、ポート番号の入力が面倒になってきたので、それぞれのサービスに適当な名前をつけて、ポート番号を入力しなくても良いようにしたいと思うようになってきた。

そこで、Nginx のリバースプロキシを使うことにした。

ASUS X200LA に Nginx をインストールして、ホスト名によって、中継するポート番号を切り替える。

Nginx のインストールは下記のコマンドで行い、

sudo apt install nginx

リバースプロキシ用の設定ファイルを conf.d ディレクトリに新し作成する。例えば、以下のような感じだ。

$ cat /etc/nginx/conf.d/proxy.conf 
server {
    listen 80;
    server_name  a.service.example;
    location / {
        proxy_pass http://127.0.0.1:8001;
    }
}

server {
    listen 80;
    server_name  b.service.example;
    location / {
        proxy_pass http://127.0.0.1:8002;
    }
}

server {
    listen 80;
    server_name  c.service.example;
    location / {
        proxy_pass http://127.0.0.1:8003;
    }
}

Nginx を再起動する。

sudo service nginx restart

そしたら、手元のPCの /etc/hosts に 下記のような感じで追加しておけば、

192.168.1.101 a.service.example
192.168.1.101 b.service.example
192.168.1.101 c.service.example

ブラウザから a.service.example にアクセスすれば、192.168.1.101:8001 にアクセスできる。