Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

无忌哥哥
无忌哥哥Original
2018-07-12 13:51:571546Durchsuche

1. Zuerst werden die beiden Serverblöcke wie folgt konfiguriert

server {
       listen   80;
       server_name  hanmk.com;
       location / {
       root /tmp/data/;
       autoindex on;
      }
   }
    server {
        listen    80 default_server;
        server_name demo.com ;
        location / {   # tomcat首页
        proxy_pass http://localhost:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       location /jenkins {                #tomcat部署jenkins
              proxy_pass  http://127.0.0.1:8080;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
       location /ApprPhD {                #nodeJs服务器
              proxy_pass http://192.168.XXX.XXX:3030;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_set_header REMOTE-HOST $remote_addr;
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
    }

Beschreibung:

Im ersten Server verweist der Dienst auf die statische Datei unter server/tmp/data/ Pfad;

Auf dem zweiten Server verweist der Dienst auf drei virtuelle Routing-Maschinen (eine Route zeigt auf die lokal auf der virtuellen Maschine bereitgestellte Tomcat-Homepage, eine auf die unter Tomcat bereitgestellten Jenkins und eine auf die Anwendung auf einer anderen virtuellen Maschine bereitgestellt)

Die auf beiden Servern konfigurierten Überwachungsports sind 80 (auch um die Testergebnisse besser anzuzeigen)

Servername gibt den (virtuellen Host-)Servernamen an und konfiguriert ihn im Allgemeinen Der Domänenname (example.org, www.example.org) kann mithilfe eines präzisen Namens, eines Platzhalternamens oder eines regulären Ausdrucks definiert werden. Wenn Sie auf einen Anforderungslink im externen Netzwerk zugreifen, stimmt nginx zu, ob er an Server1 oder Server2 weitergeleitet wird basierend auf dem von Ihnen eingegebenen Hostnamen)

Um die Testergebnisse besser sehen zu können, habe ich außerdem den Domänennamen in server_name eingegeben, anstatt die echte IP oder den lokalen Host der virtuellen Maschine einzugeben (da die IP Adressen sind alle IP-Adressen virtueller Maschinen. Wenn Sie die IP-Adresse eingeben, können Sie Nginx nicht mitteilen, wie die Anfrage weitergeleitet werden soll.) (Wenn nur ein Server vorhanden ist, muss der Servername nicht eingegeben werden, da dies der Fall ist Wird irgendwann an den Server weitergeleitet, und solange der Port korrekt ist, ist die Weiterleitung immer noch möglich.

Ausfüllen hanmk.com für Servername

Füllen Sie demo.com für Server2 aus

Nach Abschluss der obigen Konfiguration müssen Sie die Konfigurationsdatei nginx .conf neu laden

2 Konfigurieren Sie Hosts-Datei des Clients

Im ersten Schritt wurden hanmk.com und demo.com jeweils in server_name konfiguriert. Da der Domain-Name-Dienst jedoch nicht aktiviert wurde, können diese beiden Domain-Namen direkt zum Senden von Anfragen verwendet werden Der Client schlägt fehl. Um diese beiden gefälschten Domänennamen zum normalen Senden von Anforderungen zu verwenden, müssen Sie sie zunächst auf dem Client-Host konfigurieren. Die Schritte sind wie folgt:

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

Öffnen Sie die Hosts-Datei und fügen Sie die folgenden zwei Zeilen hinzu (da die zugeordneten IP-Adressen identisch sind, können Sie die beiden Domänennamen auch in einer Zeile hinzufügen, durch Leerzeichen getrennt)

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

3. Testen

(1) Verwenden Sie http://hanmk.com/, um eine Anfrage zu senden und auf die statischen Dateien unter dem Pfad der virtuellen Maschine/tmp/data/ zuzugreifen

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

(2) Besuchen Sie http://demo.com/, http://demo.com/jenkins bzw. http://demo.com/ApprPhD/index, die Ergebnisse sind wie folgt

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

Detailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet

Dies bedeutet, dass Nginx anhand des Domänennamens des Zugriffslinks mit dem entsprechenden Server übereinstimmt Leiten Sie dann basierend auf dem Standortpfad zum entsprechenden Dienst

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel dafür, wie Nginx Anfragen verarbeitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn