Версия, подходяща за принтиране
Кликни тук, за да видиш темата в оригиналният и вид
BG Development Форуми > Мрежови комуникации и технологии > Пренасочване на заявка


Публикувано от: liolioasd 28-07-2022, 18:51
Здравейте, искам да прихвана заявка към сайт (примерно example.com) и да я пренасоча към виртуална машина.
За сега се опитвам да прихвана заявката и да отворя локален файл, защото е по-лесно за тестване.

Пробвах с nginx, но там слуша на локално ИП

CODE
http {
      ...
      server {
              listen 80;
              server_name .example.com;
              location / {
                      root /data/www;
              }
      }
}


със заявка към: http://127.0.0.1/index.html
и хедър:
Host: example.com
ми отваря индекс файла от /data/www/index.html

в случая искам да работи така и като напиша: http://example.com/index.html

Ако nginx не е опция, с какво друго мога да опитам?

Публикувано от: wqw 28-07-2022, 21:01
QUOTE
Ако nginx не е опция, с какво друго мога да опитам?

Пробвай с четене на тема как работи интернет, после с мислене на тема какви неща съм надробил и накрая ако нищо не работи сложи в hosts файла едно example.com 127.0.0.1 за да тестваш през nginx-а.

cheers,
</wqw>

Публикувано от: thrawn 30-07-2022, 17:27
Струва ми се, че въпросът касае не конкретния домейн, който е ползван за пример във въпроса, а по скоро, как се пренасочва трафик от host OS към guest OS. Но за да се отговори, трябва да се каже каква виртуална машина се ползва.

Публикувано от: liolioasd 02-08-2022, 00:44
CODE
/etc/hosts:
127.0.0.3       banana.example.com

/etc/nginx/nginx.conf
...

      server {
            listen 127.0.0.3:80;
            location / {
                  proxy_pass http://192.168.68.136/;
            }
      }


Когато вместо proxy_pass имам root директива да ми зарежда локален index.html колкото за тест работи.
Идеята е като напиша в Host OS в браузъра banana.example.com, заявката да се обработи от Guest OS (VM-a),
т.е минава през nginx, отива в Guest OS, DNS resolving-a става там и ми връща отговор

Host OS -> IP -> Guest OS
Това до сега съм го правил с ИП адреси (т.е. вместо banana.example.com имам ИП адрес), като за целта имам:
Host OS:
- ip forwarding enabled
- ip route add <website IP> via <VM IP>
Guest OS (Bridged Adapter):
- ip forwarding enabled
- iptables правила

Сега се опитвам да направя същото, но вместо IP да имам домейн
Host OS -> domain -> Guest OS

Предполагам че iptables правилата не ми вършат работа в този случай?
В Guest OS, гледам (поне така си мисля) че заявката отива до виртуалната машина
в tcpdump:
01:01:46.933838 ARP, Request who-has 192.168.68.136 tell 192.168.68.69, length 46

Където 192.168.68.69 ми е Host IP.

Някакви насоки? (ползвам VirtualBox)

Публикувано от: thrawn 02-08-2022, 08:14
Е добре де, когато използваш root директива, nginx работи като обикновен сървър а не като прокси. Как си представяш, че сървър работещ на една машина ще сервира съдържание от друга?
За да стане това, трябва да имаш споделен ресурс между двете машини (дискове някакви). Като цяло в тая постановка няма особен смисъл, освен ако не гониш някаква специфична топология.

За да има смисъл в постановката, инстанцията на nginx се пуска в guest-а, а host-а се конфигурира да рутира пакетите (по ip-адрес и порт евентуално) към него само чрез iptables. Така host-а играе ролята на прост маршрутизатор.

Друг вариант е да конфигурираш nginx в host-а, но в режим прокси. От тук вече можеш да препратиш заявката до друга инсанция на nginx, работеща в guest-а като използваш правила базирани на url адреси (и евентуално да предвидиш статичен fallback ресурс който да сервираш при отпадане на сървър).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)