Как правильно изменить прокси сваггер с общим сервером - PullRequest
0 голосов
/ 18 октября 2018

Народ,

У меня есть сервер, на котором запущены как интерфейсная (угловая), так и фоновая (пружинная загрузка) приложения.Мне удалось настроить nginx 1.14 для перенаправления вызовов из / api на порт 9091 (localhost: 9091, где прослушивает API) и позволить другим вызовам продолжить нормальный поток с помощью фрагмента:

   server {
                listen 80 default_server;
                server_name example_server example_server;


                location / {
                   root /opt/myapp/html;
                   try_files $uri $uri/ /index.html;
                }

                location /api {
                   proxy_pass http://localhost:9091;
                }
        }

Теперь я хотел бы, чтобы swagger был доступен на сервере, локально он работает нормально.Я попытался написать два блока местоположения ниже.В моем понимании он перенаправит вызов / swagger-ui на начальную страницу swagger и все вызовы / webjars, сделанные swagger, на соответствующий адрес localhost: 9091.

Но страница не загружается.Я вижу ошибку в консоли моего браузера: "Uncaught (в обещании) TypeError: Невозможно прочитать свойство '1' из null springfox.js: 1".Я думаю, что неправильно маршрутизирую вещи, но не могу понять.

                location /swagger-ui {
                  proxy_pass http://localhost:9091/swagger-ui.html;
                }

                location /webjars {
                   proxy_pass http://localhost:9091;
                }

Я включил swagger.version = 2.9.0 в мой pom.xml:

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger.version}</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger.version}</version>
    </dependency>

Кто-нибудь страдал так же?

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 16 декабря 2018

Надеюсь, не слишком поздно: у меня была похожая проблема, когда я пытался добиться того же.Проблема заключается в том, что baseUrl берется из springfox.js из window.location.href.Он выполняет сопоставление регулярного выражения для swagger-ui.html и принимает все, что находится перед ним (второй элемент массива).Так как URL вашего браузера имеет только / swagger-ui, регулярное выражение не будет соответствовать правильно, результирующий массив будет нулевым, поэтому не может найти второй его элемент.

Проверьте строку 128 для более подробной информации: https://github.com/springfox/springfox/blob/master/springfox-swagger-ui/src/web/js/springfox.js

...