ダーク/ライト切り替え

複数のNext.jsプロジェクトを別々のdockerコンテナで構築し、nginxリバースプロキシ

投稿日2022-06-19

Picture of the logo


目次

目次を読み込み中...

# 複数のNext.jsプロジェクトを別々のdockerコンテナで構築し、nginxリバースプロキシで振り分けるまでに詰まった事

同一ドメインのサブディレクトリにNext.js ウェブアプリをそれぞれ独立したdockerコンテナで起動し、更にNGINXで振り分けるまでに詰まった事を備忘録も兼ねて書き残しておきます。初めての人向けです。上級者には物足りない内容だと思います。予めご了承ください。

# 今回やった事

全体図
図のとおり、独自ドメインのルートディレクトリhttps://domain.com/を入力するとlocalhotst:3000へ、https://domain.com/app2を入力した場合はlocalhost:3001へ転送されるように設定する。主にNGINX絡みですので、Next.js 以外にも通じると思います。

# next.config.jsへの追記

コチラのサイトを参考にnext.config.jsにassetPrefixとrewritesを追記する。後述する静的ファイル以外はこれで特に問題無かった。

# 127.0.0.1の罠

dockerコンテナ越しで通信する場合、同一ホスト内でも127.0.0.1では繋がらない場合があります。api等を使うときは下記のように172ポートも開ける必要があるかもしれません。

vpc
apiに繋がらないとgetStaticProps等を使ったプロジェクトではビルドエラーになります。apiに繋がらない時はcors設定もですが、vpc、ファイアウォールも疑ってみましょう。

# nginx.confの正規表現

NGINXからのリバプロの場合、静的ファイルの設定をしないとページに.jsや.cssが当たりません。

NGINX設定ファイルの一例です。()内の拡張子のファイルが呼び出されるとproxy_passのアドレスに転送されます。webp等、他の拡張子のファイルを扱う予定があるなら適宜追記してください。

以下はダメな例です。自分はこれでハマりました。

順序が逆ですが、NGINXのconfファイルは基本的に上から順に評価されるので、同じプレフィックス(~*の部分)では先に上の部分が実行され、この書き方だと全ての静的ファイルがlocalhost:3000に転送され、下段の/app2/は永久に適用されません。

慣れてる人からすれば当たり前な事ですが、NGINXのconfファイルを記述するときはlocationブロックの記載する順番にも注意しましょう。

# ちなみに正規表現の超おさらいですが

正規表現について詳しく学びたい方は「正規表現、NGINX」などで検索してみて下さい。






関連記事

docker-composeで簡易リバプロ環境構築【備忘録】

blog

docker-composeを使って手軽にnginx、リバースプロキシを構築する手順を書き残しました。個人的備忘録

Dockerを使ってNGINX→WordPressを構築する備忘録

blog

この記事では、Dockerを使用してNGINXとWordPressを組み合わせた環境を構築する方法を紹介します。NGINX→WordPressの構成を採用することで、パフォーマンスの向上とセキュリティの強化を実現します。

【Docker】Alpine Linux版Pythonにmysqlclientをインストールするとき

blog

Alpine LinuxでMySQLを使用するためには、MySQLのクライアントライブラリであるmysqlclientをインストールする必要があります。依存関係の解決に手こずったので備忘録も兼ねて書き残しておきます。

備忘録】Docker-Compose上に動いているデータベースの定期バックアップ【初心者】

blog

タイトルのとおり、Docker-Compose上に動いているMysql(またはMariadb)のバックアップを取る手順について備忘録も兼ねて書き残しておきます。

【Rust】Tonicでgrpcの接続テストをするまで【初学者】

blog

VscodeでrustのDev Containerを作り、Tonicを使ったgrpcサーバとクライアントを作り、接続テストをしてみる。接続の結果、お馴染みのHello worldが表示される。

【VPN】OpenVPNサーバーを立ち上げて自分専用VPNを作る

blog

このブログ記事では、クラウド上のUbuntu LinuxホストにDocker Composeを使ってOpenVPNサーバーを構築し、自分専用のVPN環境を作る方法を紹介します。コンテナ技術を用いることで、ホストOSへの影響を最小限に抑えながら、簡単にVPNサーバーを立ち上げることができます。

tor-privoxyをdockerで運用してみた備忘録

blog

TorとPrivoxyを使ってプライバシーを保護した通信を行うため、`tor-privoxy`コンテナをDockerで運用する方法を紹介します。設定ファイルのテンプレートや具体的な利用方法について記録しています。


スポンサーリンク

このサイトをシェアする