Puncte:0

Aplicația Tomcat (server ERDDAP) în spatele problemelor de redirecționare proxy

drapel nc

Am o instanță ERDDAP care rulează pe un server Tomcat în spatele unui proxy invers NGINX. Mediul este complet pe Kubernetes, RP este un controler de intrare NGINX care transmite cererea pe portul 443 către instanța de serviciu de pe portul 8080 asociată containerului în care rulează Tomcat (și instanța ERDDAP).

Am gasit acest tutorial (https://www.n0r1sk.com/post/nginx-reverse-proxy-with-ssl-offloading-and-apache-tomcat-backends/) care arată cum se configurează server.xml pentru un Tomcat în spatele unui proxy invers, astfel încât conectorul HTTP pentru serverul meu Tomcat este:

<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
       proxyPort="443"
       relaxedPathChars='[]|'
       relaxedQueryChars='[]:|{}^&#x5c;&#x60;&quot;&lt;&gt;' />

Cu această configurație, când solicit adresa URL https://erddap.ve.ismar.cnr.it/erddap:

 GET /erddap/HTTP/1.1
 Gazdă: erddap.ve.ismar.cnr.it
 ID-cerere X: 484e514b4038614090bf34061e9287f3
 X-Real-IP: 10.104.235.192
 X-Redirecționat-Pentru: 10.104.235.192
 X-Forwarded-Host: erddap.ve.ismar.cnr.it
 X-Forwarded-Port: 443
 X-Forwarded-Proto: https
 X-Scheme: https
 ...

Primesc urmatorul raspuns:

HTTP/1.1 302 
Strict-Transport-Security: max-age=0
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protecție: 1; mod=bloc
variază: Origine
Acces-Control-Permite-Acreditări: adevărat
Acces-Control-Expose-Heaters: Acces-Control-Permite-Origine, Acces-Control-Permite- 
Acreditări
Locație: https://erddap.ve.ismar.cnr.it/erddap/index.html
Lungimea conținutului: 0
Data: joi, 24 februarie 2022 17:55:41 GMT
Server: Apache

și totul funcționează bine cu redirecționarea proxy și răspunsul backend Tomcat.

Dar dacă adaug în configurația Tomcat Connector schema de parametri="https" așa cum este sugerat în tutorialul menționat mai sus:

<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
       proxyPort="443"
       scheme="https"
       relaxedPathChars='[]|'
       relaxedQueryChars='[]:|{}^&#x5c;&#x60;&quot;&lt;&gt;' />

aceeași cerere eșuează și primesc următorul răspuns de la Tomcat:

HTTP/1.1 302 
Strict-Transport-Security: max-age=0
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protecție: 1; mod=bloc
variază: Origine
Acces-Control-Permite-Acreditări: adevărat
Acces-Control-Expose-Heaters: Acces-Control-Permite-Origine, Acces-Control-Permite- 
Acreditări
Locație: (nespecificat)/erddap/index.html
Lungimea conținutului: 0
Data: joi, 24 februarie 2022 18:02:44 GMT
Server: Apache

Puteți observa că antetul „Locație:” este complet greșit cu prefixul „(nespecificat)” și determină clientul să facă cererea ulterioară pentru adresa URL https://erddap.ve.ismar.cnr.it/erddap/(not%20specified)/erddap/index.html (și bineînțeles că cererea eșuează).

Mă poate ajuta cineva dintre voi să identific unde ar putea fi problema în configurația mea Tomcat? De ce comportamentul este atât de diferit doar adăugând parametrul scheme="https" în server.xml?

Multe mulțumiri in avans, Pierpaolo

Puncte:0
drapel in

Din configurația conectorului dvs. Tomcat lipsesc informațiile proxy.

Atributele relevante sunt proxyName și Port proxy

Exemplu:

<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1" 
   connectionTimeout="20000"
   proxyName="example.com"
   proxyPort="443"
   scheme="https"
   relaxedPathChars='[]|'
   relaxedQueryChars='[]:|{}^&#x5c;&#x60;&quot;&lt;&gt;' />
drapel nc
Salut Gerald, multumesc pentru raspunsul tau rapid! Conectorul meu are câteva informații proxy, proxyPort este setat la 443. Trebuie să adaug și proxyName="erddap.ve.ismar.cnr.it"?
drapel in
Da, asta e ideea.
drapel nc
Din păcate, nu a funcționat, am adăugat doar linia proxyName="erddap.ve.ismar.cnr.it" pe conectorul Tomcat, dar serverul continuă să răspundă cu prefixul "(nespecificat)". `

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.