nginxによるリバースプロキシでWebアプリをワンストップアクセス
September 15, 2020
linux AlpineLinux webサーバーはじめに
1つのサーバで、複数のWebアプリを稼働する場合、ポート番号を変えてWebアプリを立ち上げる必要がでてきます。 Webサーは通常80番ポートを使用します。複数のWebアプリをdocker-composeを使って立ち上げると、80番ポートの取り合いになってしまい、結局1つだけしか立ち上げられないので、ポート番号を変えなければならないのです。 例えば、
- Webアプリ1は8001番ポートを使用
- Webアプリ2は8002番ポートを使用
- Webアプリ3は8003番ポートを使用
というようなかんじで。 この場合、サーバにアクセスする際は、アプリのポート番号を指定し、
- Webアプリ1にアクセスするには、 http://サーバ名:8001/
- Webアプリ2にアクセスするには、 http://サーバ名:8002/
- Webアプリ3にアクセスするには、 http://サーバ名:8003/
とアクセスすることになります。
リバースプロキシを使用して複数のWebアプリを束ね、サーバへのアクセスをワンストップ化し、リバースプロキシによりこのアクセスを各ポートのWebアプリに振り分けるようにすれば、スマートになります。
リバースプロキシを使用すると、どのアプリの標準の80番ポートで、
- Webアプリ1にアクセスするには、 http://サーバ名/app1/
- Webアプリ2にアクセスするには、 http://サーバ名/app2/
- Webアプリ3にアクセスするには、 http://サーバ名/app3/
このようにアクセスできるようになります。
リバースプロキシとして使うため、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