Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Nginx Anfragen basierend auf der URL weiterleitet

Wie Nginx Anfragen basierend auf der URL weiterleitet

WBOY
WBOYnach vorne
2023-05-28 14:40:062542Durchsuche

Proxyserver: Sockerserver lauscht an einem bestimmten Port, stellt gemäß der HTTP-Nachricht eine Verbindung zum angegebenen Serverport her und stellt eine Datenanforderung Verantwortlich für die Weiterleitung des entsprechenden http-Antworttexts.
- https-Proxy
Wenn eine https-Anfrage den Proxyserver passiert, wird eine Verbindungsnachricht gesendet, um einen Tunnel mit dem Proxyserver aufzubauen. Wenn der Proxyserver http 200 zurückgibt, muss der Aufbau nur erfolgreich sein Tatsächlich ist SSL/ der TLS-Handshake immer noch zwischen dem Client und dem realen Server.

proxyservlet

Da der Back-End-Projektport 8089 auf den Server-Fastdfs-Dienst zugreifen kann, dachte ich zunächst daran, das Proxyservlet von Springboot zu verwenden, um die angegebene Anforderung an den Serverport 8088 weiterzuleiten.

Das Hauptservlet von Spring boot ist das Dispatcherservlet von springmvc, sein Standard-URL-Muster ist „/“. Wenn wir einer bestimmten URL verschiedene Aufrufe (andere Serverschnittstellen) hinzufügen möchten, müssen wir ein neues Proxy-Servlet erstellen, das servletregistrationbean verwendet und ein Neues Proxyservlet, um damit umzugehen. Überwachen Sie verschiedene Ports und senden Sie Daten und registrieren Sie sie im von Springboot verwalteten Servletkontext (legen Sie den angegebenen Server und Port sowie die Schnittstelle für die Anforderungsweiterleitung fest).
<dependency>
 <groupid>org.mitre.dsmiley.httpproxy</groupid>
 <artifactid>smiley-http-proxy-servlet</artifactid>
 <version>1.7</version>
 </dependency>
### 配置代理
#请求resource时代理转发到端口8088项目中
proxy.test.servlet_url_one= /resource/*
proxy.test.target_url_one= https://localhost:8088

Ändern Sie die Konfiguration, um

@component
@data
public class proxyfilterservlet {
 @value("${proxy.test.target_url_one}")
 private string targeturl;
 @value("${proxy.test.servlet_url_one}")
 private string servleturl;
}

hinzuzufügen. Stellen Sie über den Servlet-Container eine Verbindung mit dem Zielserver her. Schließlich ist er nicht so leistungsstark wie ein professioneller Proxyserver wie nginx

nginx – Proxy-Weiterleitung

Zu diesem Zeitpunkt dachte ich darüber nach, eine Nginx-Schicht zwischen den Servern hinzuzufügen, um verschiedene Serviceanfragen zur Verarbeitung an verschiedene Port-APIs weiterzuleiten.

Um Anfragen aus dem externen Netzwerk, die angefordert werden müssen, an denselben internen Server weiterzuleiten Netzwerkport

@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;
 }
}

Das obige ist der detaillierte Inhalt vonWie Nginx Anfragen basierend auf der URL weiterleitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen