1. Was ist ein Proxyserver? Proxyserver: Wenn der Client eine Anforderung sendet, sendet er sie nicht direkt an den Zielhost, sondern zuerst an den Proxyserver. Nachdem der Proxydienst die Anforderung des Clients akzeptiert hat, sendet er sie an den Host, empfängt die vom Zielhost zurückgegebenen Daten, speichert sie auf der Festplatte des Proxyservers und sendet sie dann an den Client. 2. Warum einen Proxyserver verwenden? 1) Verbessern Sie die Zugriffsgeschwindigkeit Da die vom Zielhost zurückgegebenen Daten auf der Festplatte des Proxyservers gespeichert werden, werden sie beim nächsten Zugriff des Clients auf dieselben Site-Daten direkt von der Festplatte des Proxyservers gelesen, der eine Caching-Funktion hat. Insbesondere bei beliebten Sites kann dies die Anforderungsgeschwindigkeit erheblich verbessern. 2) Firewall-Funktion Da alle Clientanforderungen für den Zugriff auf die Remotesite über den Proxyserver laufen müssen, können Sie Beschränkungen für den Proxyserver festlegen, um bestimmte unsichere Informationen herauszufiltern. 3) Zugriff auf unzugängliche Zielseiten über Proxyserver Im Internet wurden viele Proxyserver entwickelt. Wenn der Zugriff des Clients eingeschränkt ist, kann er über einen uneingeschränkten Proxyserver auf die Zielsite zugreifen. Einfach ausgedrückt: Der Browser, den wir zum Umgehen der Firewall verwenden, verwendet den Proxyserver. Obwohl wir nicht ins Ausland gehen können, können wir auch direkt auf das externe Netzwerk zugreifen. Reverse-Proxy vs. Forward-Proxy 1. Was ist ein Forwardproxy? Was ist ein Reverse-Proxy? Ein Forwardproxy wird zwischen dem Client und dem Zielhost eingerichtet und dient nur dazu, die Verbindungsanfragen vom internen Netzwerk zum Internet weiterzuleiten. Der Client muss einen Proxyserver angeben und die HTTP-Anfragen, die ursprünglich direkt an den Webserver gesendet wurden, an den Proxyserver senden. Der Reverse-Proxy-Server wird serverseitig eingerichtet. Er entlastet den Server, indem er häufig aufgerufene Seiten zwischenspeichert und Client-Anfragen an den Zielserver im internen Netzwerk weiterleitet. Außerdem gibt er die vom Server erhaltenen Ergebnisse an den Client zurück, der eine Verbindung im Internet anfordert. Zu diesem Zeitpunkt erscheinen der Proxy-Server und der Zielhost für die Außenwelt als ein einziger Server. 2. Was sind die Hauptanwendungen eines Reverse-Proxys? Viele große Websites verwenden mittlerweile Reverse-Proxys. Neben der Verhinderung böswilliger Angriffe auf interne Server aus dem externen Netzwerk, der Zwischenspeicherung zur Reduzierung der Serverbelastung und der Zugriffssicherheitskontrolle kann es auch einen Lastenausgleich durchführen und Benutzeranforderungen auf mehrere Server verteilen. Für einen Frontend-Entwickler ist das Debuggen der Schnittstelle und das jedes Malige Senden des Codes an den Testserver eine sehr zeitaufwändige und mühsame Aufgabe. Um die Effizienz zu verbessern, wurde zur Lösung dieses Problems der Reverse-Proxy von Nginx verwendet. Schnittstellenadresse: Besuchen Sie die URL: Das Kernproblem besteht darin, dass beim Einloggen keine Cookies geschrieben werden können. Um dieses Problem zu lösen, haben wir viele Umwege gemacht. Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 10; Server { hören Sie 80; Servername localhost; Standort =/ { add_header X-Frame-Optionen SAMEORIGIN; Stammverzeichnis D:/Arbeitsbereich/; Index Index.html; } Standort ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|swf|woff|woff2|ttf|json|svg|cur|vue|otf|eot)$ { Zeichensatz UTF-8; Stammverzeichnis D:/Arbeitsbereich/; läuft in 3 Tagen ab; } Standort = /socket/v2 { Proxy-Passwort http://test.com; Proxy_Redirect aus; Proxy_http_Version 1.1; Proxy_Set_Header-Upgrade $http_upgrade; proxy_set_header Verbindung "Upgrade"; Proxy_set_header Host test.com; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_Verbindungstimeout 30; Proxy_Sendezeitüberschreitung 30; Proxy_Lese_Timeout 60; Proxy-Puffergröße 256k; Proxy-Puffer 4 256 k; } Standort / { Proxy-Passwort http://test.com; Proxy_Set_Header Cookie $http_cookie; Proxy-Cookie-Domäne test.com localhost; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_set_header Host test.com; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; } } } Der Kerncode besteht aus drei Codezeilen: Proxy_Set_Header Cookie $http_cookie; Proxy-Cookie-Domäne test.com localhost; Proxy_set_header Host test.com; Ich habe nur eine vage Vorstellung von der konkreten Erklärung:
Wichtiger Hinweis: Kehren Sie die Reihenfolge der oben genannten 3 nicht um, sonst schlägt der Proxy fehl und ich weiß nicht, warum. Wie debuggt man auf einem Mobiltelefon? Es ist nicht möglich, über ein Mobiltelefon direkt auf localhost zuzugreifen. Sie können das Mobiltelefon und den Computer mit demselben Netzwerksegment verbinden und die IP des Computers verwenden, um darauf zuzugreifen. Daher müssen Sie den Server{...} oben kopieren und einfach alle darin enthaltenen lokalen Hosts in die IP-Adresse Ihres Computers ändern. Der endgültige Code lautet: Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 10; Server { hören Sie 80; Servername localhost; Standort =/ { add_header X-Frame-Optionen SAMEORIGIN; Stammverzeichnis D:/Arbeitsbereich/; Index Index.html; } Standort ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|swf|woff|woff2|ttf|json|svg|cur|vue|otf|eot)$ { Zeichensatz UTF-8; Stammverzeichnis D:/Arbeitsbereich/; läuft in 3 Tagen ab; } Standort = /socket/v2 { Proxy-Passwort http://test.com; Proxy_Redirect aus; Proxy_http_Version 1.1; Proxy_Set_Header-Upgrade $http_upgrade; proxy_set_header Verbindung "Upgrade"; Proxy_set_header Host test.com; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_Verbindungstimeout 30; Proxy_Sendezeitüberschreitung 30; Proxy_Lese_Timeout 60; Proxy-Puffergröße 256k; Proxy-Puffer 4 256 k; } Standort / { Proxy-Passwort http://test.com; Proxy_Set_Header Cookie $http_cookie; Proxy-Cookie-Domäne test.com localhost; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_set_header Host test.com; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; } } Server { hören Sie 8080; Servername xx.xx.xx.xx; Standort =/ { add_header X-Frame-Optionen SAMEORIGIN; Stammverzeichnis D:/Arbeitsbereich/; Index Index.html; } Standort ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|swf|woff|woff2|ttf|json|svg|cur|vue|otf|eot)$ { Zeichensatz UTF-8; Stammverzeichnis D:/Arbeitsbereich/; läuft in 3 Tagen ab; } Standort = /socket/v2 { Proxy-Passwort http://test.com; Proxy_Redirect aus; Proxy_http_Version 1.1; Proxy_Set_Header-Upgrade $http_upgrade; proxy_set_header Verbindung "Upgrade"; Proxy_set_header Host test.com; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_Verbindungstimeout 30; Proxy_Sendezeitüberschreitung 30; Proxy_Lese_Timeout 60; Proxy-Puffergröße 256k; Proxy-Puffer 4 256 k; } Standort / { Proxy-Passwort http://test.com; Proxy_Set_Header Cookie $http_cookie; Proxy-Cookie-Domäne test.com xx.xx.xx.xx; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_set_header Host test.com; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; } } } Zugriffsmethode: http://xx.xx.xx.xx:8080 Wenn die Konfiguration vom Verpackungstool generiert wird, können Sie nodejs verwenden, um die IP-Adresse Ihres Computers dynamisch abzurufen Funktion getIPAdress() { var Schnittstellen = require('os').networkInterfaces(); für (var devName in Schnittstellen) { var iface = Schnittstellen[Gerätename]; für (var i = 0; i < iface.length; i++) { var alias = iface[i]; wenn (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) { Aliasadresse zurückgeben; } } } } Hier ist ein Tool zum dynamischen Generieren von nginx.config Funktion buildNginxConfig(config) { Funktion getIPAdress() { var Schnittstellen = require('os').networkInterfaces(); für (var devName in Schnittstellen) { var iface = Schnittstellen[Gerätename]; für (var i = 0; i < iface.length; i++) { var alias = iface[i]; wenn (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) { Aliasadresse zurückgeben; } } } } var cwd = process.cwd().replace(/\\/g, '/') + '/app'; var Protokoll = /https|443/.test(config.ip) ? 'https' : 'http'; var Server = [{ Browser-IP: "localhost", Hafen: 80, Wurzel: cwd, Server-IP: config.ip, Protokoll: Protokoll, }, { Browser-IP: getIPAdress(), Port: 8080, Wurzel: cwd, Server-IP: config.ip, Protokoll: Protokoll, }].map(Funktion(Element) { Rückkehr ` Server { hören Sie ${item.port}; Servername ${item.browserIp}; Standort =/ { add_header X-Frame-Optionen SAMEORIGIN; Wurzel ${item.root}; Index Index.html; } Standort ~* \\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|swf|woff|woff2|ttf|json|svg|cur|vue|otf|eot)$ { Zeichensatz UTF-8; Wurzel ${item.root}; läuft in 3 Tagen ab; } Standort = /socket/v2 { Proxy-Passwort ${item.protocol}://${item.serverIp}; Proxy_Redirect aus; Proxy_http_Version 1.1; Proxy_Set_Header-Upgrade $http_upgrade; proxy_set_header Verbindung "Upgrade"; Proxy_set_header Host ${item.serverIp}; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_Verbindungstimeout 30; Proxy_Sendezeitüberschreitung 30; Proxy_Lese_Timeout 60; Proxy-Puffergröße 256k; Proxy-Puffer 4 256 k; } Standort / { Proxy-Passwort ${item.protocol}://${item.serverIp}; Proxy_Set_Header Cookie $http_cookie; Proxy-Cookie-Domäne ${item.serverIp} ${item.browserIp}; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy_set_header Host ${item.serverIp}; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header REMOTE-HOST $remote_addr; } }`; }).join('\n'); var str = `Arbeitsprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 10; ${servers} }`; gibt str zurück; } Exporte = Modul.Exporte = BuildNginxConfig; Mit diesem universellen Reverse-Proxy können Sie nach Belieben mit jeder Website-Oberfläche spielen. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Centos7 installiert mysql5.6.29 Shell-Skript
>>: js, um eine einfache Produkt-Screening-Funktion zu erreichen
Kürzlich wurde beim Ausführen eines alten RN-Proj...
<br />Vorheriger Artikel: Webdesign-Tutorial...
Ubuntu ist ein relativ beliebtes Linux-Desktopsys...
Als ich heute eine Redis-Umgebung in Docker erste...
<br />Verwandte Artikel: So rufen Sie einen ...
1. Definition von offsetParent: offsetParent ist ...
So installieren Sie GRUB für Linux Server Sie kön...
Definition von Float Setzt das Element aus dem no...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Überblick Definition Instanzme...
Inhaltsverzeichnis Vorwort 1. Etikettenstil defin...
Zusammenfassung: Nginx-Reverse-Proxy für JIRA kon...
Inhaltsverzeichnis Zabbix überwacht Nginx Zabbix ...
Vorwort Der Grund für das Schreiben dieses Artikel...
1. Datenbanktransaktionen verringern die Datenban...