最近、このような状況に何度か遭遇しました。1 つのドメイン、1 つのポートですが、異なる拡張子のファイルが存在します。
当初、私はポートの再利用を考えました。実際には使用したことはありませんが、この用語を見るだけで機能的には問題ないとわかります。しかし、一般的な開発者や運用スタッフは技術力が高くないため、ポートの再利用を使用しない可能性が高いです。昨日、あるグループで先生が記事のスクリーンショットを投稿し、その中でこの状況について言及し、逆プロキシ技術を使用している可能性があると述べていました。その時に私はようやく気づきました。
逆プロキシ ==== リバースプロキシ
一般的に、運用スタッフのほとんどはこのものを知っています。これは比較的基本的な VPN 技術の一種です。以前はこのものについて大まかに知っていただけでしたが、今回の機会に学ぶことができました。
まず、リバースプロキシの概念について説明します。2 つの図を示します
これらの 2 つの図は非常に明確ですが、理解できない場合は、簡単に説明します。通常のプロキシ(フォワード)は、ユーザーをプロキシサーバーに変えてリソースにアクセスさせます。リバースプロキシは、サーバーがリソースをユーザーに提供するために使用します。一つはユーザーを外に出すためのものであり、もう一つはリソースを内部に入れるためのものです。
リバースプロキシについて話すと、Nginx を取り上げなければなりません。一般的に、リバースプロキシサーバーはこれを使用しますが、Apache も使用できますが、あまり多くの人が使用していないようです。
リバースプロキシの機能は、Nginx の設定ファイルで設定されます。Nginx/conf/nginx.conf
このファイルの内容は、次の構造で理解できます。
http {
server {
}
}
http は HTTP サーバーに関連するものであり、server は有効になっているサービス機能モジュールです。したがって、私たちは server 内で設定を行う必要があります。
上の図のように。
server はポート 80 をリッスンします
サービス識別名はバインドされたドメインです
location はローカル関連の設定であり、パスや正規表現を後に続けることができます。ここでは 2 つのルールを書いていますが、それぞれ 2 つの異なる拡張子を判断しています。
したがって、この設定の機能は次のとおりです:www.ttt.com でこのサーバーにアクセスする場合、アクセス拡張子を判断します。html の場合、888 ポートのサービスにリバースプロキシを行い、txt の場合は 889 ポートのサービスにリバースプロキシを行います。(2 つのポートは異なるウェブサイトを区別するためのものです。私は 2 つのサーバーを持っていないので、1 つのサーバーの 2 つのポートで区別するしかありません)
location の設定ルール
https://juejin.cn/post/6908623305129852942
y4er 先生は、ローカルウェブサービス + リバースプロキシの可能性もあると言っています。このアイデアでもこの機能は実現できるかもしれませんが、私は疑問を持ち続けています。なぜなら、設定ファイル上でいくつかの競合があるように思えるからです。ウェブサービスはおそらく http レイヤーで直接設定されるべきであり、リバースプロキシは server レイヤーで設定されるべきです。優先順位や上書きについては言及しません。location のルールは、このレイヤーでのみ有効であり、上位のレイヤーでは機能しないはずです。
もちろん、ここまでしか試していませんし、確信も持っていません。推測に過ぎません。