Обратный прокси-сервер NGINX для IP Power Swith

614
Chris

У меня есть следующие настройки:

  • Настройка NGINX в качестве обратного прокси на Raspberry Pi (его единственная цель)
  • обратный прокси отлично работает для других IP-адресов в локальной сети, а также для нескольких портов для служб на одном рабочем столе Windows

У меня проблема только с одним устройством локальной сети, но я не могу получить обратный прокси. Это удаленный выключатель питания IP (3GStore)

Запись хоста DNS в коммутаторе питания IP - это «Outlet», поэтому в пределах ЛВС навигация http://Outletвызывает интерфейс, и если вы вместо этого набираете IP и нажимаете, вводите те же самые страницы, и адресная строка заполняется локальным IP-адресом 192.168. .0.xxx / index.asp

думая, что порт IP Power Switch мог быть проблемой, так как он также находится на порту 80, я изменил его на 9080 вместо

это блок, который у меня есть в конфигурационном файле, который я создал в NGINX (он, кажется, работает для остальных моих устройств / сервисов с обратным прокси, но НЕ работает для этого IP Power Switch)

server { listen 80; server_name mydomaincom; location /powerswitch/ { proxy_pass http://192.168.0.xxx:9080/; include /etc/nginx/proxy_params; } } 

Переход к mydomaincom/powerswitchрезультатам в ошибке NGINX 404 Not Found

Любые предложения будут ценны!

1
Работает ли эта ссылка `http: //192.168.0.xxx: 9080 /` в вашей локальной сети? Alex 7 лет назад 0
`nginx` НЕ будет перезаписывать URL-адрес, когда он передает его на целевое устройство, если вы не укажете его. Таким образом, если на вашем веб-сервере нет устройства, отвечающего на «http://192.168.0.xxx:9080/powerswitch», вы ничего не получите. Ответ @ unNamed - это то, что вам нужно сделать. LawrenceC 7 лет назад 0

2 ответа на вопрос

1
unNamed

Ваш конфиг имеет две ошибки:

  1. Сайт вашего IP Power Switch перенаправляет и, следовательно, не доступен извне.

  2. Вы перенаправляете запросы в неправильную позицию для вашего устройства.

Попробуйте этот конфиг:

server { listen 80; server_name my.domain.com; location /powerswitch/ { rewrite /powerswitch(/.*) $1 break; proxy_redirect / /powerswitch/; proxy_pass http://192.168.0.xxx; } } 

Я отредактировал rewrite, proxy_passи добавил proxy_redirect.

0
Chris

да, переход на локальный IP-адрес и порт работает ... перенаправляет на http://192.168.0.xxx/index.asp

С тех пор я переключаю порт обратно с 9080 обратно на 80

дальнейшие проб и ошибок, и я получил его на работу («на полпути») с этой записи:

server { listen 80; server_name my.domain.com; location /powerswitch/ { rewrite /powerswitch/(.*) /$1 break; proxy_pass http://192.168.0.xxx/powerswitch/; } } 

Так что теперь my.domain.com/powerswitchзагружает интерфейс IP Power Switch локально в локальной сети ... НО, извлекая внешние my.domain.com/powerswitchсостояния, которые страница не работает (показывает локальный IP в адресной строке: 192.168.0.xxx/index.asp;проверено на телефоне сотовой связи / Wi-Fi выключен)

Пока это не решено, отредактируйте свой вопрос и добавьте туда детали. Когда вы вставляете конфигурацию nginx, выберите мышью строки, которые должны сохранять исходное форматирование, и нажмите кнопку `{}`, чтобы она была читабельной. Alex 7 лет назад 0