ASP .NET Core jako usługa - jak obsłużyć "VirtualHost" przy więcej niż jedej aplikacji

0

Witam moi drodzy. Kolejny zestaw pytań.
Podoba mi się, że mam wybór i mogę ominąć IISa w aplikacjach ASP .NET Core, ale natknąłem się na pewien problem. Ja wiem, że w tytule jest nazewnictwo Apache'owe, nie wiedziałem jak poprawnie zadać pytanie.

Mam dwie oddzielne aplikacje webowe napisane w .NET Core. Na tę chwilę każda z nich ma swój port, ponieważ nie pozwala mieć dwóch różnych aplikacji na tym samym porcie... i tutaj właśnie wpada moje pytanie. Czy takie rzeczy potrafi tylko IIS? Hosting dwóch, osobnych aplikacji po porcie 80 lub 443 rozróżnianych domeną? Co jeśli ktoś na tej maszynie ma już coś na tych portach?

Paskudnie wyglądają linki z portami. Wolałbym to ogarnąć jakąś subdomeną i każda wskazywałaby na ten sam adres IP, ale to "serwer" by decydował co wyświetlić.
Czy wymagam za wiele?

4

Sam sobie odpowiedziałeś na pytanie, stawia się server robiący za reverse proxy działający na portach 80,443 i który routuje ruch dalej na wybrane porty ze względu na subdomeny i czy co tam sobie wymyślimy. W apachu robi się to właśnie na virtual hostach.

0

Możesz napisać swój proxy serwer albo uzyc ngimx-a ale wtedy i tak będziesz musiał zająć 80 i 443. Jeśli coś innego na nich już będzie to i tak lipa.

0

Aaaa, no właśnie. Jeśli już coś jest na porcie 80 lub 443 w co nie jestem w stanie ingerować to nie mogę mieć proxy serwera na tych portach....
A co w przypadku gdy mam aplikację ASP .NET Core + Angular? Nie mogę reverse proxy ustawić na localhost, albo wewnętrzny adres IP maszyny, bo wtedy klient będzie szukał API w sieci lokalnej urządzenia z którego użytkownik się łączy? Czyli muszę mieć na routerze zrobiony port redirection na to co jest za reverse proxy + samo reverse proxy... Mam wrażenie, że to trochę na około

0

Nie mogę reverse proxy ustawić na localhost, albo wewnętrzny adres IP maszyny, bo wtedy klient będzie szukał API w sieci lokalnej urządzenia z którego użytkownik się łączy?

api.yoursite:443 -> reverse proxy nginxa na twoim serverze -> localhost:5001 -> zwrotka do usera

Ty nie szukasz czegoś typu

https://stackoverflow.com/questions/33055212/nginx-multiple-server-blocks-listening-to-same-port

https://www.digitalocean.com/community/questions/multiple-sites-using-nginx

?

0

Chyba tylko proxy w chmurze Ci pozostaje :)

1
AdamWox napisał(a):

Aaaa, no właśnie. Jeśli już coś jest na porcie 80 lub 443 w co nie jestem w stanie ingerować to nie mogę mieć proxy serwera na tych portach....
A co w przypadku gdy mam aplikację ASP .NET Core + Angular? Nie mogę reverse proxy ustawić na localhost, albo wewnętrzny adres IP maszyny, bo wtedy klient będzie szukał API w sieci lokalnej urządzenia z którego użytkownik się łączy? Czyli muszę mieć na routerze zrobiony port redirection na to co jest za reverse proxy + samo reverse proxy... Mam wrażenie, że to trochę na około

No jeśli już coś masz na 80-tce to drugiej nie postawisz (Być może w ramach nginxa da sie, bo tam się jescze ustawia domene z której przychodzi request). Ja ostatnio konfigurowałem takie SPA z reactem. Więc .net core api startuje np na porcie 3000. A nginx dla tego api nasłuchuje na 5000 i robi przekierowanie. Aplikacja reactowa w nginxie nasłuchuje na 80. I w konfiguracji uderza po dane do api na port 5000. Więc mam dwie usługi ngnix. Jedna na 80 (React) i druga na 5000 api. Ale jeśli miałbym coś innego na 80 jeszcze to usługa z reactem nie wystartowałaby.

0

Dziś właśnie się tym zajmowałem, polecam nginx i proxy do tego :) naprawdę przyjemnie się to konfiguruje. Jutro jak będę w pracy to podeślę szablon pliku z konfiguracją + komendy :)

0

jeśli chcesz żeby to działało wyłącznie na localhoscie to na windowsie możesz wyedytować plik hosts i używać kolejnych adresów ip z zakresu 127.0.0.0/8:
127.0.0.2 angular.site.com
127.0.0.3 api.site.com

0

Jaki jest sens kompilowania tego do usługi, skoro i tak trzeba obsłużyć routing do odpowiednich aplikacji za pomocą reverse proxy :D na jedno wychodzi jakbym to postawił pełnoprawnie na IISie. Podobał mi się ten sposób z usługą, ponieważ niektóre aplikacje mam zamiar wdrażać u klientów, w tym przypadku, niestety, muszę się zaopatrzyć w serwer. Azure jest za drogie, więc albo postawie swoje, albo wykupie ;-) dzięki za odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1