Estou configurando um proxy reverso na frente de um serviço usando Podman no Fedora. O problema é quando eu defino o local para /
tudo funciona bem, mas quando eu adiciono um subdiretório como /read/
eu recebo erros diferentes.
Esta é a configuração do nginx:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
error_log /var/log/nginx/err.log notice;
access_log /var/log/nginx/acc.log;
location /read/ {
proxy_pass http://127.0.0.1:8000/read/;
proxy_set_header X-Forwarded-Host 127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
e resposta ao tentar entrar em contato com o serviço:
curl --noproxy "127.0.0.1" -v http://127.0.0.1:8080/read/
* Trying 127.0.0.1:8080...
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> GET /read/ HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.6.0
> Accept: */*
>
< HTTP/1.1 303 See Other
< Server: nginx/1.27.3
< Date: Fri, 24 Jan 2025 21:57:28 GMT
< Content-Length: 0
< Connection: keep-alive
< Cache-Control: private
< Content-Security-Policy: base-uri 'none'; default-src 'self'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data:; media-src 'self' data:; object-src 'none'; report-uri http://127.0.0.1:8080/logger/csp-report; script-src 'report-sample' 'nonce-89583bebc2e348ba85f0ef7463e3162c' 'unsafe-inline'; style-src 'report-sample' 'nonce-89583bebc2e348ba85f0ef7463e3162c' 'unsafe-inline'
< Location: http://127.0.0.1:8080/login?r=%2Fread%2F
< Permissions-Policy: interest-cohort=()
< Referrer-Policy: same-origin, strict-origin
< Set-Cookie: sxid=MTczNzc1NTg0OHwwajkzbFhpXzVtc2ZQVnh6bWNJdEllbWlrcm5pVl9Zb1pvZkl1TjN1U1MwZDVNN2ZOQ1F0WHRDT214dTNsY1RPRUl2RHg3UmRlSlB2SVFSWm1UdGQwcm9zSEF1bkFGdVB4dlJpU2p0M1dnPT18HfAf2yi5rBri3VK6LK5cOogYr1mqjogyBFa4Z8BM-2I=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; HttpOnly; SameSite=Lax
< Vary: Accept-Encoding
< X-Content-Type-Options: nosniff
< X-Frame-Options: DENY
< X-Robots-Tag: noindex, nofollow, noarchive
< X-Xss-Protection: 1; mode=block
<
* Connection #0 to host 127.0.0.1 left intact
Seu aplicativo assume que a raiz do aplicativo é
/
. Quando ele recebe uma solicitação para/read/
, ele envia um redirecionamento para/login/r=$2fread%2f
. Esta é a página de login do aplicativo, com instruções para redirecionar/read/
após o login.Você precisa configurar a URL raiz do seu aplicativo para ser
http://127.0.0.1/read/
. Dessa forma, seu aplicativo conhece o contexto corretamente.