Od jakiegoś czasu zmagam się z tym i zdecydowanie robię coś złego.
Mam serwer Apache i serwer JBoss na tej samej maszynie. Chciałbym przekierować ruch dla mydomain.com do JBoss localhost: 8080 / example. DNS jest obecnie skonfigurowany dla mydomain.com i po wejściu do przeglądarki przejdzie bezpośrednio do portu 80.
Moje pytanie brzmi: jak przekierować do innego portu, gdy pewna nazwa domeny trafia do Apache (w tym przypadku „mojadomena.com”)?
<VirtualHost ip.addr.is.here>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
ZAKTUALIZOWANO z sugestiami - nadal nie przekazuje do portu 8080
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias www.mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
Odpowiedzi:
Powinieneś opuścić domenę
http://example.com
w ProxyPass i ProxyPassReverse i pozostawić ją jako/
. Dodatkowo musisz zostawić/
na końcu miejsce, wexample/
którym następuje przekierowanie. Miałem też pewne problemy zhttp://example.com
kontrahttp://www.example.com
- tylko www działało, dopóki nie utworzyłem nazwy serwera www.example.com i ServerAlias example.com. Spróbuj następujących.Po wprowadzeniu tych zmian dodaj potrzebne moduły i zrestartuj apache
źródło
/usr/sbin/setsebool -P httpd_can_network_connect 1
Rozwiązałem ten problem za pomocą następującego kodu:
Użyłem również:
źródło
Chciałem zrobić dokładnie to, aby uzyskać dostęp do Jenkinsa z domeny głównej.
Okazało się, że muszę wyłączyć domyślną witrynę, aby to zadziałało. Oto dokładnie to, co zrobiłem.
I wstaw to do pliku:
Następnie musisz włączyć / wyłączyć odpowiednie strony:
Mam nadzieję, że to komuś pomoże.
źródło
Odkryłem to metodą prób i błędów. Jeśli twoja konfiguracja określa ServerName, twoja dyrektywa VirtualHost będzie musiała zrobić to samo. W poniższym przykładzie awesome.example.com i amazing.example.com byłyby przekierowane do jakiejś lokalnej usługi działającej na porcie 4567.
Wiem, że to nie odpowiada dokładnie na pytanie, ale umieszczam je tutaj, ponieważ jest to najlepszy wynik wyszukiwania dla przekierowania portów Apache. Więc myślę, że kiedyś komuś to pomoże.
źródło
*:80
zamiastexample.com:80
oznaczało, że port nie zostanie przekierowany.Musisz upewnić się, że proxy jest włączone na serwerze. Możesz to zrobić za pomocą następujących poleceń:
źródło
To może być stare pytanie, ale oto co zrobiłem:
W pliku .conf załadowanym przez Apache:
Objaśnienie: Nasłuchuj wszystkich żądań kierowanych do portu 80 komputera lokalnego. Jeśli zażądałem „
http://something.com/somethingorother
”, przekaż to żądanie do „http://localhost:8080/somethingorother
”. Powinno to zadziałać dla zewnętrznego gościa, ponieważ zgodnie z dokumentacją mapuje zdalne żądanie do przestrzeni serwera lokalnego.Używam Apache 2.4.6-2ubuntu2.2, więc nie jestem pewien, jak „-2ubuntu2.2” wpływa na szersze zastosowanie tej odpowiedzi.
Po wprowadzeniu tych zmian dodaj potrzebne moduły i zrestartuj apache
źródło
Jeśli nie musisz używać proxy do JBoss, a mydomain.com:8080 możesz „ujawnić” światu, zrobię to.
źródło
Po prostu użyj Reverse Proxy w konfiguracji Apache (bezpośrednio):
Poszukaj tutaj dokumentacji Apache opisującej, jak używać moda
źródło
Mój apache nasłuchuje na 2 różnych portach,
Używam 80, gdy chcę przezroczystego adresu URL i nie umieszczam portu po adresie URL przydatnym dla usług Google, które nie zezwalają na lokalny adres URL?
Ale używam 8080 do wewnętrznego programowania, gdzie używam portu jako odniesienia dla „środowiska programistycznego”
źródło
Apache obsługuje wirtualne hosty oparte na nazwach i IP. Wygląda na to, że używasz obu, co prawdopodobnie nie jest tym, czego potrzebujesz.
Myślę, że tak naprawdę próbujesz skonfigurować hosting wirtualny oparty na nazwach i do tego nie musisz określać adresu IP.
Wypróbuj <VirtualHost *: 80>, aby powiązać wszystkie adresy IP, chyba że naprawdę chcesz wirtualnego hostingu opartego na IP . Może tak być w przypadku, gdy serwer ma kilka adresów IP, a chcesz obsługiwać różne witryny pod różnymi adresami. Najczęstszą konfiguracją są (jak sądzę) wirtualne hosty oparte na nazwach.
źródło
Potrzebujesz 2 rzeczy:
ServerAlias www.mydomain.com
do swojej konfiguracjiProxyPassMatch ^(.*)$ http://localhost:8080/example$1
, aby prawdopodobnie nie przeszkadzały mod_dir i końcowe ukośniki.źródło
Wszystkie zapewniają doskonały wgląd w dostęp do portów za pośrednictwem nazw domen na serwerach wirtualnych. Nie zapomnij jednak o włączeniu serwerów wirtualnych; można to skomentować:
Uruchamiamy WSGI z serwerem Apache w domenie sxxxx.com i serwerem golang działającym na porcie 6800. Niektóre zapory wydają się blokować nazwy domen z portami. To było nasze rozwiązanie:
źródło
Działa to również w ISPConfig. Na liście serwisów WWW wejdź do domeny, kliknij zakładkę Opcje, dodaj następujące linie:;
Następnie wejdź na stronę i wolaa :) To też działa protokół HTTPS.
źródło
Spróbuj tego-
źródło