初めに
今回の記事では、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の設定はややこしいですよね。
この記事は少しでも参考になりましたら幸いです。