Puncte:0

NGINX: inversează calea proxy către subdomeniu și adaugă restul

drapel cn

Am următorul fișier de configurare NGINX:

Server {
  nume_server devices.example.org;

  ssl_protocols TLSv1.2;
  certificat_ssl /etc/ssl/web/example.crt;
  ssl_certificate_key /etc/ssl/web/example.key;

  locație ~* ^/(.*)(.*)?$ {
    proxy_pass http://$1.proxy.tv$2;
    proxy_buffering dezactivat;
    proxy_set_header Gazdă $http_host;
    proxy_set_header X-Real-IP $adresă_la distanță;
  }

Și trebuie să trimit toate solicitările primite către backend-ul afișat, de exemplu.

  • https://devices.example.org/m123 ar trebui să procureze http://m123.proxy.tv
  • https://devices.example.org/m123/favicon.ico ar trebui să procureze http://m123.proxy.tv/favicon.ico
  • https://devices.example.org/m123/scripts/something.js?params=bar ar trebui să procureze http://m123.proxy.tv/scripts/something.js?params=bar

Cu toate acestea, primesc întotdeauna a Poarta proastă eroare ca retur, iar în jurnalele primesc:

[eroare] 18643#0: *12393 favicon.ico.proxy.tv nu a putut fi rezolvată (3: Gazda nu a fost găsită)

Presupun că regex-ul meu deformează cumva cererea de proxy, dar nu sunt sigur cum.

Alte combinații pe care le-am încercat:

  • locație ~* ^/(.*)(?:/(.*))$ proxy către http://$1.proxy.tv/$2$is_args$args
  • locație ~* ^/(.*)(?:/(.*))? proxy către http://$1.proxy.tv/$2$is_args$args

Orice ajutor este foarte apreciat.

Puncte:0
drapel us

Aveți două grupuri de captură de expresii regulate cu metacaractere în dvs Locație directiva de blocare, ceea ce înseamnă că totul este capturat $1.

Pe baza cerințelor dvs., următoarele Locație blocul ar putea funcționa:

locație ~ ^/(?<subdomeniu>[^/]+)/(<cale>.*)?$ {
    proxy_pass http://$subdomain.proxy.tv/$path;
    ...
}

Pentru claritate, folosesc nume de variabile (<>) în expresiile regulate. The [^/]+ este folosit pentru a captura prima parte a componentei cale URL (capturați 1 sau mai multe caractere care nu sunt /).

Motivul pentru Poarta proastă eroarea este că nginx nu a putut rezolva numele de domeniu favicon.ico.proxy.tv. Acestea sunt câteva motive pentru care se întâmplă:

  1. favicon.ico.proxy.tv nu este înregistrat în DNS.
  2. Nu ați configurat nginx rezolutor directivă cu soluții DNS valide.

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.