У меня есть следующее:
- HTTPS-доступ к NAS или что-то в этом роде.
- NGINX в качестве резервного прокси в качестве контейнера
- Контейнер с Tomcat в качестве appcontainer.
NAS пересылает HTTPS-запрос как HTTP в контейнер NGINX. Затем контейнер NGINX перенаправляет HTTP-запрос в мой appcontainer.
Я могу получить доступ к странице входа в мой appcontainer, но после входа в систему выполняется POST следующим образом
Nginx access.log
POST /foo/login.do HTTP/1.1" 302 0 "https://nas.dns.server/foo/login.do
В localhost_access.log в appcontainer tomcat показывает
POST /foo/doLogin.do HTTP/1.0" 302
и запрос как HTTP к NAS
Кажется, что игнорируется заголовок X-Forwarded-Proto.
Мой nginx.conf настроен следующим образом:
server {
listen 80;
server_name $hostname;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
error_log /dev/stdout info;
access_log /dev/stdout;
client_max_body_size 100M;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
resolver 127.0.0.11 valid=30s;
sendfile on;
location /foo {
proxy_set_header Origin "";
set $appcontainer http://appcontainer:8080;
proxy_pass $appcontainer;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $https; #I’ve also tested with $scheme
}
}
Спасибо