Я 3 дня боролся с обратным прокси-сервером Nginx, чтобы понять, что это легко.
Мне нужно просто получить доступ ко многим внутренним приложениям node-red (nodeJS) из Nginx, но всегда с разными портами.
Для следующего, это мой пример:
Веб-клиент -> `https://ip_adr/1881/ui/` -> Nginx proxy_pass `http://127.0.0.1:1881/ui/` (приложение)
Бэкенд-приложение показывает изображения на http://127.0.0.1:1881/*.jpg
- Я реализую статический тест с помощью:
место расположения / {
#proxy_pass http://127.0.0.1:1881;
}
https://ip_адрес/ui
в моем браузере работает хорошо со всеми изображениями приложений.
С переписыванием для динамического перенаправления порта с внешнего интерфейса на внутренний:
расположение ~ ^/(?<порт>\d\d\d\d) {
переписать "^/\d{4}/(.*)" /$1 break;
proxy_pass http://127.0.0.1:$port;
}
С помощью регулярного выражения я извлекаю порт из ip_adr/1881 с помощью /(?<порт>\d\d\d\d)
, и переписать URL без /1881
но сохраняя в конце концов /путь1/путь2/...
если я поставлю https://192.168.x.x/1881/ui/
у меня в браузере все хорошо но БЕЗ картинок.
После многих и многих тестов мой браузер не отображает никаких изображений, и журнал ошибок трассировки сообщает мне обо всех изображениях:
10.03.2022 01:01:36 [ошибка] 50065#50065: *1224 open() "/usr/share/nginx/html/schema_fire_EEU.jpg" не удалось (2: нет такого файла или каталога), клиент: 192.168 .1.29, сервер: instance3.test.fr, запрос: "GET /schema_fire_EEU.jpg HTTP/1.1", хост: "192.168.1.53", реферер: "https://192.168.1.53/1881/ui/"
Это очень невероятно, если я скажу https://192.168.x.x/1881/schema_fire_EEU.jpg
, я могу отобразить это изображение !!!
Думаю, проблема со слэшем...
Кто-нибудь может мне помочь?
Хорошего дня ;-)