前回のあらすじ

  • LAN内からアクセスできるStrapi環境ができた

この記事ですること

  • Nginxを用いたリバースプロキシの設定
  • Strapiに外部からアクセスする

Nginxを用いたリバースプロキシの構築

リバースプロキシで外部からのアクセスをどこに振り分けるかを決めていく。
今回の場合公開しているサービスがStrapiだけなのでホストのポート30000でNodePortをそのまま公開するのも手だが、複数サービス作る場合を考えると一応作っておきたい。
なので今回は特定ドメインへのアクセスをlocalhost:30000に投げる形で作る。

とりあえずNginxが入っていなければインストール。

sudo apt install nginx

そしたら設定ファイルを作っていく。
Nginxの設定ファイルは作った後、リンクを貼って有効化するしきたりのようなので従っておく。

/etc/nginx/sites-available/server.conf

server{
    server_name    xxxxx.mydns.jp 192.168.x.x;
    listen 8383;

    proxy_set_header    Host    $host;
    proxy_set_header    X-Real-IP    $remote_addr;
    proxy_set_header    X-Forwarded-Host       $host;
    proxy_set_header    X-Forwarded-Server    $host;
    proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;

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

server {
    listen       80  default_server;
    listen       8383 default_server;
    server_name  _;
    return       444;
}

server_nameでxxxxx.mydns.jpとローカルからのアクセスについて処理する設定になる。
なんでポート8383かというと、自宅のネット環境では限られたポートしか公開できなかったため。
普通の環境ならlisten 80;でいい。
そしてlocation /、全てのアクセスをポート30000で待ち受けているNodePortに投げている。
これでMinikubeのStrapiまで届く。
その下は万一80番や8383番によくわからないアクセスが来た場合は受け付けないという設定を行っている。

作ったあとはリンクを貼って有効化。

sudo ln -fs /etc/nginx/sites-available/server.conf /etc/nginx/sites-enabled/ 
systemctl restart nginx

これで192.168.x.x:8383orxxxxx.mydns.jpグローバルIP:8383でのStrapiへのアクセスが出来るようになった。
外部からのアクセスにルーターのポート開放や静的NAPT設定が必要な場合が多いのでそのあたりは使っているルーターで設定しよう。

mydns.jpを使った動的IPアドレス下でのサーバー公開

さて、 xxxxx.mydns.jpっていうのがさらっと出てきた。
これはDynamicDNSサービスといって動的IPに対してドメインをつなげてくれるサービスだ。
ありがたいことに無料。
これがないとIPが変わるたびに自分でDNSのIPを変えないといけなくなる。
やり方は簡単で、
https://www.mydns.jp/
ここでアカウントを作って好きなサブドメインで登録するだけ。
その後は定期的にIPアドレスを報告しないといけないのだが、そこはスクリプトで自動化できる。
詳しくは以下の記事を参照。

参考記事:MyDNS事始め

私はv6プラス環境なので公開までもうひと手間必要な上、80番ポートが使えなかった。
まあStrapiにユーザーが直接アクセスすることなんてないので問題なし。
その辺りの設定は別記事に纏めているので同じ環境の人は試してみるといい。

参考記事:v6プラス環境下で自宅サーバーを作る際のTips

というわけで、前回と打って変わって今回は短かった。
次はいよいよフロントエンドのデプロイへと進んでいく。
ここが終わればほぼ完成といっていいだろう。

次の記事: Gatsby+Strapiでブログを構築した話(10) Gatsbyデプロイ