nginx реверс прокси с подстановкой строки

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
guest
проходил мимо

nginx реверс прокси с подстановкой строки

Непрочитанное сообщение guest » 2024-09-15 13:00:20

граждане, подскажите плз, как на фронтэнде нжинкса сделать подстановку некоторой строки в урл? :drinks:
хочу новнц на бэкенды виртуалок напилить..
некий "умник" предлагает такую шляпу:

Код: Выделить всё

  server {
    listen 80 default_server;
    
    location / {
      root /www/data;
      try_files $uri $uri/ /index-both.html;
    }
    
    location /novnc/alice/ {
      proxy_pass http://127.0.0.1:6080/;
    }
    
    location /novnc/alice/websockify {
      proxy_pass http://127.0.0.1:6080/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_set_header Host $host;
    }
    
    location /novnc/bob/ {
      proxy_pass http://127.0.0.1:6081/;
    }
    
    location /novnc/bob/websockify {
      proxy_pass http://127.0.0.1:6081/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_set_header Host $host;
    }
  } 
но для доступа к виртуалкам предлагает в индексный хтмл index-both.html руками вписывать полный урл для доступа такого вида:

Код: Выделить всё

<a href="http://127.0.0.1/novnc/alice/vnc.html?resize=remote&path=novnc/alice/websockify">Alice</a>
<a href="http://127.0.0.1/novnc/bob/vnc.html?resize=remote&path=novnc/bob/websockify">Bob</a>
ну этож полнейший идиотизм!!! :fool:

можно же както зареврайтить в самом локейшине недостающую строку соксификатора ( /vnc.html?resize=remote&path=novnc/alice/websockify ), чтобы она сама добавлялась при вводе только начальной части ( http://127.0.0.1/novnc/alice )??

этож элементарно должно делаться... я думаю... :bn:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Пермяк - солёны уши!
проходил мимо
Сообщения: 7
Зарегистрирован: 2024-09-11 12:43:39
Откуда: Из самого сердца Пармы
Контактная информация:

nginx реверс прокси с подстановкой строки

Непрочитанное сообщение Пермяк - солёны уши! » 2024-09-18 9:29:07

Уважаемый, тебе надо, чтобы условно ссылка была: http://my.host/novnc/alice,
а тебе выдавался бы результат как будто ты перешёл по ссылке с дополнением к URL'у /vnc.html?resize=remote&path=novnc/alice/websockify?

Если да, то тебе надо rewrite добавить в секцию location /novnc/alice/, что-то типа такого:

Код: Выделить всё

rewrite    ^/novnc/alice$ /novnc/alice/vnc.html?resize=remote&path=novnc/alice/websockify;
Это если я правильно тебя понял. А в более общем виде - можно сразу в секцию server добавить:

Код: Выделить всё

rewrite    ^/novnc/(\w+)$ /novnc/$1/vnc.html?resize=remote&path=novnc/$1/websockify;
И в таком случае вроде без разницы сколько у тебя Бобов, Алисов и прочих будет, все должны единообразно перенаправляться.

Аватара пользователя
Пермяк - солёны уши!
проходил мимо
Сообщения: 7
Зарегистрирован: 2024-09-11 12:43:39
Откуда: Из самого сердца Пармы
Контактная информация:

nginx реверс прокси с подстановкой строки

Непрочитанное сообщение Пермяк - солёны уши! » 2024-09-18 9:38:40

Добавлю: Я там с конечными слэшами возможно некорректно указал. (в rewrite'е без конечного слеша, а location подразумевает, что он есть) Сам уже разберись в процессе.