@Fayst563

Как настроить L5 Swagger чтобы он работал с nginx proxy_pass?

Существует конфигурация nginx, которая, в зависимости от параметра в URL, перенаправляет на нужный bec

location ~ ^/main-back/ {
proxy_pass http://main-back:80;
rewrite /main-back/(.*) /$1 break;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

На laravel работает бек. Стоит darkaonline/l5-swagger и zircote/swagger-php. Я поместил все аннотации, все работает локально. Однако, когда я запускаю на сервере с nginx proxy_pass, то на странице со swagger я вижу ошибки в путях к css и js файлам https://take.ms/W44M1 то есть он не помещает /main-back/ в путь к файлу. Что только я не пробовал, и l5-swagger.php настраивал, и различные конфигурации nginx пробовали пытались прописать редиректы в .htaccess

Задача состоит в том, чтобы перейти по ссылке mysit.com/main-back/api-doc была открыта документация на обратной стороне, которая взята из внутреннего контейнера. Фронт часть работает на другом контейнером, чем бек.
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 2
karabanov
@karabanov
Системный администратор
Ты ведь отрезаешь эту часть пути с помощью rewrite /main-back/(.*) /$1 break;

пробовали пытались прописать редиректы в .htaccess

Nginx не поддерживает .htaccess, это сделано для того, чтобы конфигурация была читаемой и предсказуемой.
Ответ написан
@Fayst563 Автор вопроса
В общем решил так:

location /main-back/ {
    proxy_pass          http://main-back:80/main-back/;
    rewrite /main-back/(.*) /$1 break;
    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 $scheme;
    location /main-back/docs {
      rewrite /main-back/(.*) /main-back/$1 break;
      proxy_pass          http://main-back:80/main-back/docs;
    }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы