У меня весеннее загрузочное приложение, работающее по URL: http://localhost:8080
, с двумя конечными точками:
/endpoint1
/login2 - login page for authentication
Затем я запускаю его за прокси-сервером - nginx работает на порту 81. В конфигурации nginx, когда я ставлючто-то вроде этого:
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $host;
proxy_pass http://localhost:8080/;
}
тогда все работает нормально: когда я использую http://localhost:81/endpoint1
, меня перенаправляют на http://localhost:81/login2
.
Однако я бы хотел, чтобы URL моего приложения nginxпохож на http://localhost:81/my_prefix/login2
. Поэтому я добавил префикс в конфигурацию nginx:
location /my_prefix/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $host;
proxy_pass http://localhost:8080/;
}
Но когда я пытаюсь с URL: http://localhost:81/my_prefix/endpoint1
, я перенаправляюсь на: http://localhost:81/login2
- без /my_prefix
.
В моем классе конфигурации Spring WebSecurityConfigurerAdapter
у меня есть некоторая конфигурация безопасности со страницей входа для аутентификации:
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.csrf().disable()
.addFilterBefore(authenticationFilter(), UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers("/", "/metadata", "/favicon.ico", "/api/**", "/*.css", "/*.js").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().hasRole("USER").and()
.formLogin().loginPage("/login2").permitAll()
.and()
.logout().logoutSuccessUrl("/");
}
Также у меня есть свойство: server.use-forward-headers: true
Как я могу форсировать Spring MVCвключить префикс местоположения nginx (/my_prefix
) при перенаправлении на страницу входа?