2
0

More than 1 year has passed since last update.

Nginxのproxy_passを設定する時の注意点

Posted at

初めに

今回の記事では、NGINXのリバースプロキシの設定でつまずいたことをまとめました。

リバースプロキシとは

リリバースプロキシはウェブサーバーの前に配置され、クライアント(一般的にはユーザーのウェブブラウザ)からのリクエストを受け取り、それをバックエンドサーバーへ転送します。

リバースプロキシ主な目的は三つあります。

1.セキュリティの向上

リバースプロキシはクライアントとバックエンドサーバーの間に立ち、クライアントとバックエンドサーバーの直接接続を避けます。これにより、バックエンドサーバーのIPアドレスや内部構造を隠すことができます。(dockerのコンテナの通信など)

2.負荷分散

リバースプロキシはバックエンドサーバーへのリクエストを複数のサーバーに均等に分散させることができます。これにより、サーバーの負荷を分散し、サービスの応答性とパフォーマンスを向上させることができます。

3.キャッシュ

リバースプロキシはクライアントからのリクエストに対して、バックエンドサーバーの応答を一時的にキャッシュすることができます。キャッシュを使用することで、重複するリクエストに対してバックエンドサーバーの負荷を減らし、応答時間を短縮することができます。

リバースプロキシは、ウェブサーバーとして動作する場合もありますが、今回はNginxにリバースプロキシを設定します。

Nginxのリバースプロキシ設定で躓いたこと

Nginxのproxy_passを使用する場合、ターゲットサーバーアドレスの末尾にスラッシュ(/)を使用するかしないか結構変わります。例えば、以下のリクエストがあります。

request_url='http://domin.com/proxy/test'

ⅰ.スラッシュ / を使用する場合:

location /proxy/ {
    proxy_pass http://targetServer.com/;
}

この設定では、リクエストがNginxに到着し、/proxy/パスにマッチする場合NginxはリクエストURLからマッチしたパス部分(つまり/proxy/)を削除し、残りのパス部分(つまりtest)をターゲットサーバーに送信します。
変換後のアドレスは:

true_url='http://targetServer.com/test'

ⅱ.スラッシュ / を使用しない場合:

location /proxy/ {
    proxy_pass http://targetServer.com;
}

この設定では、リクエストがNginxに到着し、/proxy/パスにマッチする場合、Nginxは完全なリクエストURLをターゲットサーバーhttp://targetServer.comに送信します。/proxy/以降のアドレス部分も含まれます。
変換後のアドレスは:

true_url='http://targetServer.com/proxy/test'

最後に

今回はリバースプロキシの設定でつまずいたことをまとめました。
Nginxの設定はややこしいですよね。
この記事は少しでも参考になりましたら幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0