ホームページ  >  記事  >  運用・保守  >  nginx が URL に基づいてリクエストを転送する方法

nginx が URL に基づいてリクエストを転送する方法

WBOY
WBOY転載
2023-05-28 14:40:062542ブラウズ

プロキシ サーバー: 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

  • この時点で、サーバー間に nginx のレイヤーを追加して、さまざまなサービスリクエストをさまざまなポート API に転送して処理することを考えました

必要なリクエストを入力します。外部ネットワークからのリクエストは、同じサーバーの内部ネットワーク ポートに転送されます。


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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。