プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2022/08/05

Ubuntu に nginx を入れてリバースプロキシとして使用する

event_note2022/08/05 1:52

環境

  • Ubuntu 20.04

インストール

$ sudo apt install nginx

http://localhost にアクセスして nginx が起動していることを確認します。

設定

nginx の設定ファイルは /etc/nginx/nginx.conf ですが、この中を見ると、http ディレクティブの中に以下の記述があります。

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

conf.dsites-enabled の中に置いた設定ファイルが読み込まれるようになっています。
2つの使い分けについては以下のページが参考になりました。

というわけで、sites-available に設定ファイルを作成して、sites-enabled にシンボリックリンクを作成します。

conf ファイルの追加

$ sudo nano /etc/nginx/sites-available/sample.conf

以下を追記します。

server {
    listen        80  default_server;
    server_name   _;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

server_name_; は catch-all の意味らしく、任意の URL に対して有効になります。

proxy_pass が遷移先の URL です。
その他の設定については以下を参考にさせてもらいました。

デフォルトの設定の削除

sites-enabled の中には最初から default という設定へのシンボリックリンクがあります。
設定内容次第ではこの default の設定が邪魔になることもあるので、そのような場合は削除しておきます。

今回の場合は default_serverserver_name _; が重複しているので、削除しておかないと上手くルーティングできません。

$ sudo rm /etc/nginx/sites-enabled/default

シンボリックリンクの作成

$ sudo ln -s /etc/nginx/sites-available/sample.conf /etc/nginx/sites-enabled/sample

nginx を再起動します。

$ sudo systemctl restart nginx

以上で完了です。