Запуск весенней загрузки приложения за nginx - отсутствует префикс местоположения при перенаправлении - PullRequest
0 голосов
/ 10 октября 2019

У меня весеннее загрузочное приложение, работающее по 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) при перенаправлении на страницу входа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...