У меня проблемы с правильной настройкой Nginx в качестве обратного прокси-сервера для приложения, размещенного на tomcat, в котором для аутентификации используется Spring Security.
Модуль аутентификации Spring в приложении отклоняет входы в систему с
2018-11-06 19:30:01 DEBUG http-nio-8443-exec-398 @ 1951e0f24163 [OneTimePasswordAuthenticationFilter] - Authentication request failed: org.springframework.security.authentication.AuthenticationServiceException: Authentication method not supported: GET
Журналы Nginx, кажется, отправляют аутентификацию как запросы GET, и я не понимаю, почему, но я вижу ошибку:
192.168.0.1 - - [06/Nov/2018:18:08:56 +0000] "POST /rear/j_spring_security_check HTTP/1.1" 302 161 "https://nginx_server/remote_rear/login/auth?login_error=1" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "-"
192.168.0.1 - - [06/Nov/2018:18:08:56 +0000] "GET /remote_rear/j_spring_security_check HTTP/1.1" 302 0 "https://nginx_server/remote_rear/login/auth?login_error=1" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "-"
192.168.0.1 - - [06/Nov/2018:18:08:56 +0000] "GET /rear/login/authfail;jsessionid=81EF0C82C98FC746D7641E6845E105D7?login_error=1 HTTP/1.1" 302 161 "https://nginx_server/remote_rear/login/auth?login_error=1" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "-"
Моя текущая конфигурация прокси-сервера, основанная на том, что я смог проверить в Google:
server {
listen 443 default_server ssl;
location /remote_rear {
proxy_set_header Host $http_host;
proxy_set_header X_FORWARDED_PROTO '$https';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://real_server:8443/rear;
#proxy_redirect https://real_server:8443/rear /rear;
proxy_redirect http://$host https://$host;
}
location /rear {
proxy_set_header Host $http_host;
proxy_set_header X_FORWARDED_PROTO '$https';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/rear/(.*)$ /remote_rear/$1 redirect;
}
}
Я действительно озадачен тем, почему URL-адрес j_spring_security_check отправляется как GET, а не POST, и я был бы очень признателен, если бы кто-то объяснил, что я делаю неправильно, и как я могу это исправить.
Заранее большое спасибо!