アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

Nginxでのリバースプロキシの設定方法

Featured image of the post

Nginxは、軽量で高性能なWebサーバーとして知られていますが、その中でも特にリバースプロキシとしての役割が注目されています。リバースプロキシとは、クライアントからのリクエストを受け取り、内部のサーバーにそのリクエストを転送し、そのレスポンスをクライアントに返す役割を果たすサーバーのことです。この記事では、Nginxを使用してリバースプロキシを設定する方法について詳しく説明します。

Nginxのインストール

まず、Nginxがインストールされていない場合は、以下のコマンドを使用してインストールします。

Ubuntu/Debianの場合
sudo apt update
sudo apt install nginx
CentOS/RHELの場合
sudo yum install epel-release
sudo yum install nginx

インストールが完了したら、Nginxを起動し、自動起動設定を行います。

sudo systemctl start nginx
sudo systemctl enable nginx

Nginxの基本設定

Nginxの設定ファイルは通常 /etc/nginx/nginx.conf にありますが、仮想ホストの設定は /etc/nginx/sites-available/ ディレクトリ内に配置されます。ここでは、仮想ホストの設定ファイルを作成してリバースプロキシの設定を行います。

まず、新しい設定ファイルを作成します。

sudo nano /etc/nginx/sites-available/reverse-proxy.conf

リバースプロキシの設定

以下は、基本的なリバースプロキシの設定例です。この例では、Nginxが example.com というドメイン名のリクエストを受け取り、内部のサーバー(例えば、http://localhost:8080)に転送します。


server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

上記の設定では、以下のような処理が行われます:

  • listen 80; は、Nginxがポート80でリクエストを受け付けるように設定します。
  • server_name example.com; は、指定されたドメイン名でリクエストを受け付けるように設定します。
  • location / は、ルートパス(すべてのパス)に対するリクエストを処理します。
  • proxy_pass http://localhost:8080; は、リクエストを内部のサーバー(http://localhost:8080)に転送します。
  • proxy_set_header ディレクティブは、クライアントの情報を内部のサーバーに渡すために使用されます。

設定ファイルを保存したら、以下のコマンドで設定を有効にします。


sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/

次に、Nginxの設定にエラーがないかを確認し、Nginxを再起動します。

sudo nginx -t
sudo systemctl restart nginx

HTTPS対応

リバースプロキシとしてNginxを使用する場合、セキュリティを確保するためにHTTPSを設定することが推奨されます。Let's Encryptを使用して無料のSSL証明書を取得し、HTTPSを設定する手順は以下の通りです。

Certbotのインストール

まず、Certbotをインストールします。

Ubuntu/Debianの場合
sudo apt install certbot python3-certbot-nginx
CentOS/RHELの場合
sudo yum install certbot python3-certbot-nginx
SSL証明書の取得

以下のコマンドを実行してSSL証明書を取得し、Nginxの設定を自動的に更新します。

sudo certbot --nginx -d example.com

コマンドの実行中に、メールアドレスの入力や利用規約への同意が求められます。正しく設定されると、NginxはHTTPSを使用してリクエストを処理するようになります。

まとめ

Nginxを使用してリバースプロキシを設定することで、Webアプリケーションのパフォーマンスやセキュリティを向上させることができます。この記事では、Nginxの基本的なインストール方法からリバースプロキシの設定、HTTPSの導入までを詳しく説明しました。Nginxの設定は柔軟性が高く、さまざまな要件に対応可能ですので、ぜひ試してみてください。

プログラミング学習でつまずいていませんか?

独学で挫折しそうな方も、プロのメンターがしっかりサポートします。

  • プログラミング学習の進め方がわからない
  • 独学で行き詰まった時の質問相手がほしい
  • 何から始めればいいかわからない
まずは30分の無料相談

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

プログラミングを学ぶならテックアカデミー

テックアカデミー
無料相談はこちら