При использовании Nginx в качестве шлюза службы запросы с использованием URL-адреса, например /js/jquery.js
, по понятным причинам не будут обрабатываться.
Это похоже на то, что было бы простым решением, включающим $http_origin
, но я этого не сделалудалось выяснить это.
Мы поддерживаем несколько различных сервисов с помощью Docker и используем контейнер Nginx для обработки маршрутизации.Для страниц, выполняющих запросы с относительными URL-адресами, такими как js/jquery.js
, это прекрасно работает, так как браузеры добавят это к текущему URL-адресу.
Для простого примера:
http {
server {
listen 80;
server_name $HOSTNAME;
location /video {
include proxy_headers.conf;
proxy_pass http://$HOSTNAME:8000/video;
}
}
}
Без косой черты работает, так как запрашивает domain/video/lib/..
:
<link rel="stylesheet" href="lib/bootstrap.min.css">
Скосая черта не делает, поскольку запрашивает domain/lib/..
:
<link rel="stylesheet" href="/lib/bootstrap.min.css">
Такое ощущение, что решение состоит в том, чтобы проверить, сделал ли $http_origin
запрос из /video
, а затем перенаправить еготакже не начинался с /video
.
Поскольку в конфигурационных файлах Nginx не предусмотрено несколько условий, я не был уверен, как лучше всего это попробовать.Я уверен, что есть тривиальное решение, учитывая, насколько распространенной должна быть эта проблема.Спасибо!