Maison > Opération et maintenance > Nginx > le corps du texte

Comment nginx transmet les requêtes en fonction de l'URL

WBOY
Libérer: 2023-05-28 14:40:06
avant
2545 Les gens l'ont consulté

Serveur proxy : sockerserver écoute un certain port, se connecte au port du serveur spécifié en fonction du message http et effectue une demande de données
-proxy http
la requête http passe par le serveur proxy, et le serveur proxy n'a qu'à être responsable de la transmission du corps de réponse http correspondant.
- Proxy https
Lorsqu'une requête https passe par le serveur proxy, un message de connexion sera envoyé pour établir un tunnel avec le serveur proxy. Si le serveur proxy renvoie http 200, l'établissement doit seulement être réussi. responsable du transfert des données. En fait, ssl/ La négociation TLS se produit toujours entre le client et le serveur réel.

proxyservlet

Étant donné que le port 8089 du projet backend peut accéder au service fastdfs du serveur, la première chose à laquelle j'ai pensé a été d'utiliser le proxyservlet de Springboot pour proxy la requête spécifiée vers le port 8088 du serveur

Le servlet principal de Spring boot est le dispatcherservlet de springmvc, son modèle d'URL par défaut est "/". Si nous voulons ajouter différents appels (autres interfaces serveur) à une certaine URL, nous devons créer un nouveau servlet proxy, qui utilisera servletregistrationbean et créera un nouveau proxyservlet pour le gérer et envoyer des données, et l'enregistrer dans le contexte de servlet géré par springboot (définir le serveur et le port spécifiés, ainsi que l'interface pour le transfert des demandes)

Dépendance

<dependency>
 <groupid>org.mitre.dsmiley.httpproxy</groupid>
 <artifactid>smiley-http-proxy-servlet</artifactid>
 <version>1.7</version>
 </dependency>
Copier après la connexion

Configuration

### 配置代理
#请求resource时代理转发到端口8088项目中
proxy.test.servlet_url_one= /resource/*
proxy.test.target_url_one= https://localhost:8088
Copier après la connexion
@component
@data
public class proxyfilterservlet {
 @value("${proxy.test.target_url_one}")
 private string targeturl;
 @value("${proxy.test.servlet_url_one}")
 private string servleturl;
}
Copier après la connexion

Changez la configuration pour ajouter

@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;
 }
}
Copier après la connexion

Établissez une connexion avec le serveur cible via le conteneur de servlet Après tout, il n'est pas aussi puissant qu'un serveur proxy professionnel comme nginx

nginx—redirection proxy

    .
  • À ce moment-là, j'ai pensé à ajouter une couche de nginx entre les serveurs. Pour transférer différentes demandes de service vers différentes API de port pour traitement

Pour transférer les demandes du réseau externe qui doivent être demandées vers le même serveur interne. port réseau

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;
 }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!