Назначение обратного прокси-сервера Nginx из URL-адреса запроса

У меня проблема с настройкой Nginx для:

  • обратный прокси-сервер с целевым сервером из URL-адреса запроса
  • порт может быть по умолчанию (80), но если это также может быть из URL-адреса запроса, это здорово
  • поведение, которое я хотел бы вызвать http://nginxserver/destinationserver, затем

nginx вызовет сервер назначения (взято из URL-адреса запроса и не зафиксировано в местоположении)

Я пробовал что-то вроде этого, но это не работает

location  ~^\/([a-zA-Z0-9]+)\/([0-9]+)\/([a-zA-Z0-9]+) {
proxy_pass http://$1:$2/$3;
}

Мне нужно такое поведение, потому что у нас есть статический VPN с одного сервера, где я мог бы иметь nginx и некоторые другие удаленные устройства. Каждое из этих устройств имеет веб-сервер, который показывает с порта 80 по умолчанию статус устройства. Проблема в том, что только изнутри сервера (с VPN) мы можем получить доступ к каждому удаленному устройству, поэтому я пытаюсь с помощью Nginx включить обратный прокси-сервер для доступа к устройствам снаружи сервера.

Спасибо за помощь


person paolo francia    schedule 10.01.2018    source источник


Ответы (1)


Решение:

Это решение, которое я нашел:

location  ~ "/go/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(.+)$" {
    proxy_pass http://$1:80$2;  
    sub_filter "<head>" "<head><base href=\"${scheme}://${host}/go/$1/\">";     
    sub_filter_once off;    
    sub_filter_types application/json application/x-javascript;     
    sub_filter '"/flash/' '"/go/$1/flash/';     
    sub_filter '"/rom/' '"/go/$1/rom/'; 
}

Например, я могу использовать следующий URL-адрес: http://myproxyserver/go/192.168.0.100/ и я получаю ответ от 192.168.0.100, бросающего обратный прокси-сервер nginx.

person paolo francia    schedule 22.01.2018