nginxによるリバースプロキシでWebアプリをワンストップアクセス

September 15, 2020

linuxAlpineLinuxwebサーバー

はじめに

1つのサーバで、複数のWebアプリを稼働する場合、ポート番号を変えてWebアプリを立ち上げる必要がでてきます。 Webサーは通常80番ポートを使用します。複数のWebアプリをdocker-composeを使って立ち上げると、80番ポートの取り合いになってしまい、結局1つだけしか立ち上げられないので、ポート番号を変えなければならないのです。 例えば、

  • Webアプリ1は8001番ポートを使用
  • Webアプリ2は8002番ポートを使用
  • Webアプリ3は8003番ポートを使用

というようなかんじで。 この場合、サーバにアクセスする際は、アプリのポート番号を指定し、

とアクセスすることになります。

リバースプロキシを使用して複数のWebアプリを束ね、サーバへのアクセスをワンストップ化し、リバースプロキシによりこのアクセスを各ポートのWebアプリに振り分けるようにすれば、スマートになります。

リバースプロキシを使用すると、どのアプリの標準の80番ポートで、

このようにアクセスできるようになります。

リバースプロキシとして使うため、nginxをインストールします。

本記事は、Alpine Linuxにnginxをインストールした際の手順の備忘録です。

nginxのインストール

nginxをインストール

# apk add nginx

confファイルにより、アプリに対するhttpリクエストを、アプリのポート番号を指定したhttpリクエストに変換します。 以下のapp1~app3は一例です。 Webサーバは8080番ポートで立ち上がっていて、nginxリバースプロキシにより、80番ポートでアクセスする想定です。

/etc/nginx/http.d/default.confを作成

/etc/nginx/http.d/default.conf
server {
    listen 80;

    server_name larkbox;
    client_max_body_size 128m;

    index index.html index.htm index.php;

    location /app1/ {
        proxy_pass http://localhost:8001;
        rewrite /app1/(.*)$ /$1 break;
        access_log off;
    }
    location /app2/ {
        proxy_pass http://localhost:8002;
        rewrite /app2/(.*)$ /$1 break;
        access_log off;
    }
    location /app3/ {
        proxy_pass http://localhost:8003;
        rewrite /app3/(.*)$ /$1 break;
        access_log off;
    }
    location / {
        proxy_pass http://localhost:8080/;
        access_log off;
    }

}

nginxを起動。

# rc-service nginx start

起動設定

# rc-update add nginx default

Written by questions6768 who lives in Uji, Kyoto.