Puncte:0

Sintaxa numelui în amonte a serverului invers nginx

drapel jp

Am apreciat foarte mult dacă cineva îmi poate ajuta. Tocmai am încercat să învăț proxy-ul invers nginx, dar am întâmpinat o problemă cu sintaxa numelui în amonte.

Vă rugăm să consultați această fotografie Foto: structura serverului proxy invers nginx

Când curl 192.168.189.140, se afișează serverul proxy

  1. [depanare] vhost.c(811): [client 192.168.189.140] [strict] Nume de gazdă nevalid „bbs_server_pools”, problemă în apropiere: _serve

  2. [depanare] vhost.c(902): [client 192.168.189.140] Client trimis incorect Antet gazdă: bbs_server_pools

După ce am schimbat numele în amonte bbs_server_pools în bbs, funcționează bine. Are asta ceva de-a face cu versiunea de nginx sau altceva?

  1. eroare fișier Nginx.conf

    lucrător_procese 1;
    error_log logs/error.log eroare;
    
    evenimente {
    conexiuni_muncitor 1024;
    }
    
    http {
    include mime.tipuri;
    aplicație de tip_default/octet-stream;
    sendfile activat;
    keepalive_timeout 65;
    log_format principal '$remote_addr - $remote_user [$time_local] "$request"'
                    „$status $body_bytes_sent „$http_referer””
                    '"$http_user_agent" "$http_x_forwarded_for"';
    
    Server {
    asculta 80;
    nume_server bbs.etiantian.org;
    Locație / {
         proxy_pass http://bbs_server_pools;   
       } 
    }    
    
    în amonte bbs_server_pools {
    server 192.168.189.137:80;
    server 192.168.189.138:80 greutate=3;
    }  
    
    
    }
    
  2. fișier nginx.conf bun după schimbarea bbs_server_pools în bbs

    lucrător_procese 1;
    error_log logs/error.log eroare;
    
    evenimente {
    conexiuni_muncitor 1024;
    }
    
    http {
    include mime.tipuri;
    aplicație de tip_default/octet-stream;
    sendfile activat;
    keepalive_timeout 65;
    log_format principal '$remote_addr - $remote_user [$time_local] "$request"'
                    „$status $body_bytes_sent „$http_referer””
                    '"$http_user_agent" "$http_x_forwarded_for"';
    
    Server {
    asculta 80;
    nume_server bbs.etiantian.org;
    Locație / {
         proxy_pass http://bbs;   
       } 
    }    
    
    bbs în amonte {
    server 192.168.189.137:80;
    server 192.168.189.138:80 greutate=3;
    }  
    
    
    }
    
Puncte:0
drapel gr

Această eroare nu are nimic de-a face cu nginx în sine (ei bine, aproape nimic). Este returnat de backend-ul dvs. din amonte. Motivul este că două anteturi de solicitare HTTP, inclusiv Gazdă unul este întotdeauna redefinit, cu excepția cazului în care un alt comportament este specificat în mod explicit folosind proxy_set_header directivă:

În mod implicit, sunt redefinite doar două câmpuri:

proxy_set_header Gazdă $proxy_host;
proxy_set_header Închidere conexiune;

The Gazdă valoarea antetului cererii redirecționate va fi bbs_server_pools cu prima ta configurație și bbs cu al doilea. Cu toate acestea, caracterele valide pentru numele de gazdă sunt litere ASCII de la A la z, cifrele de la 0 la 9, iar cratima (-).Deși liniuța de subliniere este un caracter valid pentru numele în amonte nginx, nu este valabil pentru numele de gazdă și aceasta este cauza erorii pe care o primiți de la amonte. De obicei, este o idee bună să păstrați Gazdă valoarea antetului din cererea inițială folosind

proxy_set_header Gazdă $gazdă;

(sau $http_host, puteți verifica diferența Aici). Cu toate acestea, pot exista cazuri când nu ar trebui să o faci; Verifica acest raspuns pentru a afla mai multe informatii despre acest subiect.

drapel jp
Salut Ivan! Mulțumesc foarte mult! Raspunsul tau mi-a rezolvat problema cu totul
Ivan Shatsky avatar
drapel gr
Modul ServerFault de a mulțumi pentru răspunsul de lucru este descris [aici](https://serverfault.com/tour#:~:text=The%20person%20who%20asked%20can%20mark%20one%20answer%20as%20% 22acceptat%22.) :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.