リバースプロキシとは何ですか?
標準のプロキシサーバーは、多くの場合プライバシーを提供したりコンテンツをフィルタリングしたりすることで、クライアントに代わって機能します。リバースプロキシはサーバーに代わって機能し、トラフィックを傍受して別のサーバーにルーティングします。
リバースプロキシをインストールする理由はいくつかあります。主な理由の1つはプライバシーです。
複数のサーバーがある場合、リバースプロキシは、サーバー間の負荷を分散し、パフォーマンスを向上させるのに役立ちます。リバースプロキシはクライアントに単一の連絡先を提供するため、複数のサーバー間でログとレポートを一元化できます。
Nginxは、静的コンテンツをすばやく提供し、動的コンテンツ要求をApacheサーバーに渡すことで、パフォーマンスを向上させることができます。
このガイドは、システムにNginxリバースプロキシをインストールして構成するのに役立ちます。
前提条件
- Apache、PHP、およびファイアウォールを備えたLinuxサーバー
- sudoを使用したrootユーザーへのアクセス アクセス
- Linuxコマンドラインまたはターミナル( Ctrl – Alt – T Ubuntuの場合、 Alt – f2 CentOSの場合)
- パッケージマネージャー(APTなど)
Nginxリバースプロキシの設定
ステップ1:デフォルトのリポジトリからNginxをインストールする
ターミナルウィンドウを開き、次のように入力します。
sudo apt-get update
パッケージマネージャーがソフトウェアリストの更新を終了できるようにしてから、次のように入力します。
sudo apt-get install nginx
プロセスが完了するのを待ちます。
ステップ2(オプション):公式リポジトリからNginxをインストールする
セキュリティキーを追加
ターミナルウィンドウで、次のように入力します。
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
これにより、Nginxの署名キーがダウンロードされ、本物のソフトウェアをダウンロードしていることが確認されます。
sources.listを開きます 編集用ファイル
ターミナルで、次のように入力します。
sudo vi /etc/apt/sources.list
リポジトリリストにNginxソースを追加
/etc/apt/sources.list
に次の行を入力します 開いたばかりのファイル:
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
<CODENAME>
を置き換えます Debianのディストリビューションのコードネームを使用します。
保存 ファイルと終了 。
Nginxの最新リリースをインストールする
Nginxの最新リリースをインストールするには、次のコマンドを使用します:
sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx
ステップ3:Nginxを起動し、再起動時に起動するように構成する
Nginxを起動するには:
sudo systemctl start nginx
Nginxを有効にするには:
sudo systemctl enable nginx
Nginxが実行されていることを確認するには:
sudo systemctl status nginx
出力には、サービスがアクティブ(実行中)であることが示されます。 、下の画像のように:
ステップ4:デフォルトの構成ファイルのリンクを解除する
ターミナルで、次のように入力します。
sudo unlink /etc/nginx/sites-enabled/default
ステップ5:新しい構成ファイルを作成する
新しい構成ファイルを作成するには、次のように入力します。
cd /etc/nginx/sites-available/
sudo vi custom_server.conf
custom_server
を置き換えます あなたにとって意味のある名前で。新しいファイルに次のように入力します:
server {
listen 80;
location / {
proxy_pass http://my_server;
}
}
これは非常に基本的なNginxリバースプロキシの例です。 Nginxは、すべてのトラフィックについてポート80のすべてのトラフィックをリッスンするように設定されています。
proxy_pass
コマンドは、ポート80のすべてのトラフィックを http://my_server
に転送します 。 http://my_server
を変更するだけです 選択した場所に移動すると、Nginxはクライアントのリクエストをインターセプトし、指定した場所にルーティングします。終了したら、ファイルを保存して終了します。
ステップ6:構成ファイルをリンクしてアクティブ化する
新しいNginxファイルをアクティブ化するには、次のように入力します。
ln -s /etc/nginx/sites-available/custom_server.conf
/etc/nginx/sites-enabled/custom_server.conf
いつものように、 custom_server
を置き換えます 手順5で作成した構成ファイルの名前を使用します。
ステップ7:Nginxをテストして再起動する
Nginxをテストするには:
sudo service nginx configtest
Nginxを再起動するには:
sudo service nginx restart
オプションのNginx構成オプション
プロキシバッファ
デフォルトでは、Nginxはプロキシするサーバーのトラフィックをバッファリングします。バッファは、クライアントが完全な応答の送信を完了するまでサーバー応答が送信されないため、サーバーのパフォーマンスを向上させます。
バッファをオフにするには、手順5の構成ファイルを開きます。場所/セクションの下 、以下を追加します:
proxy_buffering off;
リクエストヘッダー
ヘッダーは、行われたリクエストまたはクライアントに関するサーバー情報を提供します。
Nginxは、次の2つのヘッダーフィールドを再定義します: host
$proxy_host
用に構成されています 、およびconnection
close
用に構成されています 。これらのヘッダーを使用する場合は、構成ファイルの動作を必ず変更してください。
ヘッダー文字列が空の場合、Nginxはそれらのフィールドを削除するだけです。
Nginxがヘザーを処理する方法を変更するには、構成ファイルで次のコマンドを使用します。
location / {
proxy_set_header Host $host;
}
この例では、Nginxにhost
を設定するように指示しています $host
へ 変数。
ヘッダーフィールドがプロキシサーバーに渡されないようにするには、次のように空の文字列を使用します。
location / {
proxy_set_header header-variable "";
}
負荷分散
構成ファイルを使用して、トラフィックを複数のサーバーにルーティングできます。この構成を使用するには、構成ファイルは次の例のようになります。
http {
server {
proxy_pass http://my_server
}
}
つまり、HTTP構成はステップ5のサーバー構成の外に出ます。
サーバーのグループの名前を作成するには、upstream
を使用します コマンド:
http {
upstream server_group {
server my.server1.com weight=3;
server my.server2.com;
}
server {
location / {
proxy_pass http://server_group;
}
}
}
この指定には2つのサーバーが必要です– my.server1.com
およびmy.server2.com
–そしてそれらを一緒にバンドルします。 Nginxは、 http://server_group
という名前でサーバーのグループをプロキシします 。名前は任意に変更できます。
この例では、 weight
を使用しています 3つのリクエストをmy.server1.com
にルーティングするコマンド 、次に my.server2.com
への1つのリクエスト 。これは、サーバー間でクライアントの負荷を手動で分散するための1つのオプションです。もう1つの方法は、指定を単純に省略することです。この場合、Nginxは、リストされたサーバー間でリクエストを均等にラウンドロビンします。