プロキシ サーバー: sockerserver は特定のポートをリッスンし、http メッセージに従って指定されたサーバー ポートに接続し、データ リクエストを行います。
-http proxy
http リクエストはプロキシ サーバーを通過します。プロキシ サーバーは、対応する http 応答本文を転送することだけを担当します。これは問題ありません。
- https プロキシ
https リクエストがプロキシ サーバーを通過すると、プロキシ サーバーとのトンネルを確立するために接続メッセージが送信されます。プロキシ サーバーが http 200 を返したら、確立は成功です。後続のプロキシ サーバーデータの転送のみを担当する必要があるため、実際には、クライアントと実サーバーの間で SSL/TLS ハンドシェイクが引き続き発生します。
proxyservlet
バックグラウンド プロジェクトの 8089 ポートはサーバーの fastdfs サービスにアクセスできるため、最初に考えたのは、springboot の proxyservlet を使用してプロキシを実行することでしたサーバーへの指定されたリクエスト。ポート 8088
Spring Boot のメイン サーブレットは、springmvc の dispatcherservlet です。そのデフォルトの URL パターンは "/" です。別の呼び出しを追加したい場合 (他のサーバー新しいプロキシ サーブレットを作成する必要があります。servletregistrationbean を使用して、さまざまなポートとデータ送信の監視を処理する新しいプロキシ サーブレットを作成し、それを springboot によって管理されるサーブレット コンテキストに登録します (指定されたサーバーを設定します)。およびポート、およびリクエスト転送用のインターフェイス。)
##Dependency
<dependency> <groupid>org.mitre.dsmiley.httpproxy</groupid> <artifactid>smiley-http-proxy-servlet</artifactid> <version>1.7</version> </dependency>
Configuration
### 配置代理 #请求resource时代理转发到端口8088项目中 proxy.test.servlet_url_one= /resource/* proxy.test.target_url_one= https://localhost:8088
@component @data public class proxyfilterservlet { @value("${proxy.test.target_url_one}") private string targeturl; @value("${proxy.test.servlet_url_one}") private string servleturl; }
Change config add
@configuration public class proxyservletconfig { @autowired private proxyfilterservlet proxyfilterservlet; //多个代理servlet可以配置多个bean @bean public servletregistrationbean servletregistrationbean(){ servletregistrationbean servletregistrationbean = new servletregistrationbean(new proxyservlet(), proxyfilterservlet.getservleturl()); //这个setname必须要设置,并且多个的时候,名字需要不一样 servletregistrationbean.setname("go_backend"); servletregistrationbean.addinitparameter("targeturi", proxyfilterservlet.gettargeturl()); servletregistrationbean.addinitparameter(proxyservlet.p_log, "false"); return servletregistrationbean; } }
サーブレット コンテナを介してターゲット サーバーとの接続を確立します。結局のところ、nginx のような専門的なプロキシ サーバーはありません。
nginx-proxy forwarding
server { listen 80; server_name 127.0.0.1; location / { proxy_pass http://127.0.0.1:3000; } location ~ /api/ { proxy_pass http://172.30.1.123:8081; } }
以上がnginx が URL に基づいてリクエストを転送する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。