2018.6.5
2019.4.18

リバースプロキシの設定

Nginxでリバースプロキシの設定を行う方法です。

通常の設定や、複数サーバのリバースプロキシの設定、サーバ名ではなくポート番号で振り分ける場合などの設定例を掲載しています。

目次

  • リバースプロキシの設定
  • 複数サーバのリバースプロキシの設定
  • サーバ名ではなくポート番号で振り分ける場合
  • 参考リンク

リバースプロキシの設定

Nginxをインストールすると「/etc/nginx/conf.d」というディレクトリが作成されます。

デフォルトの設定では、このディレクトリ配下の「~~~.conf」というファイルを起動時に読み込むようになっているので、リバースプロキシを設定したい場合、このディレクトリ配下に設定ファイルを追加します。

今回は「proxy.conf」というファイル名で作成し、以下の内容で保存します。

server{
    server_name    site1.st40.xyz;

    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

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

設定後はNginxを再起動してください。

上記はURL「http://site1.st40.xyz」のアクセスがあったら「http://localhost:8080」のコンテンツを返します。

複数サーバのリバースプロキシの設定

複数サイトのリバースプロキシを設定する場合は以下の通りになります。

server{
    server_name    site1.st40.xyz;

    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

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

server{
    server_name    site2.st40.xyz;

    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

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

上記は「http://site1.st40.xyz」の他に、URL「http://site2.st40.xyz」のアクセスがあったら「http://localhost:8081」のコンテンツを返します。

サーバの設定を単純にもう一つ追加しているだけなので簡単ですね。

サーバ名ではなくポート番号で振り分ける場合

自宅でテストする際にサーバ名ではなくポート番号で振り分けたいことがあったので、その例になります。

server{
    listen 192.168.0.10:8080;
    server_name 192.168.0.10;

    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

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

server{
    listen 192.168.0.10:8081;
    server_name 192.168.0.10;

    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

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

参考にした記事によっては「proxy_set_header」の設定が異なっていたので、これについては別途確認する予定です。

参考リンク

Nginx】関連記事