Przekierowanie Apache do innego portu

Zmagałem się z tym od jakiegoś czasu i zdecydowanie robię coś złego.

Mam serwer apache i serwer JBoss na tej samej maszynie. Chciałbym przekierować ruch na mydomain.com do JBoss localhost: 8080 / example. DNS jest obecnie ustawiony dla mydomain.com i przejdzie prosto do Portu 80 po wprowadzeniu do przeglądarki.

Moje pytanie brzmi jak przekierować do innego portu, gdy pewna nazwa domeny przychodzi do apache (w tym przypadku, "mydomain.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> 

Aktualizacja W / sugestie - Nadal nie Przekierowuję na port 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> 
Author: agentcurry, 2011-12-17

13 answers

Powinieneś opuścić domenę http://example.com w ProxyPass i ProxyPassReverse i zostawić ją jako /. Dodatkowo należy pozostawić / na końcu example/ do miejsca przekierowania. Ponadto miałem pewne problemy z http://example.com vs. http://www.example.com - tylko www działało, dopóki nie zrobiłem nazwy serwera www.example.com, i ServerAlias example.com spróbuj.

<VirtualHost *:80> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName www.example.com
  ServerAlias example.com
  ProxyPass / http://localhost:8080/example/
  ProxyPassReverse / http://localhost:8080/example/
</VirtualHost> 

Po wprowadzeniu tych zmian, dodaj potrzebne moduły i uruchom ponownie apache

sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart
 161
Author: 2AMTech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 01:24:46

Rozwiązałem ten problem za pomocą następującego kodu:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName myhost.com
ServerAlias ww.myhost.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Użyłem również:

a2enmod proxy_http
 24
Author: Renan Vizza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 01:50:38

Chciałem zrobić dokładnie to, aby uzyskać dostęp do Jenkinsa z domeny głównej.

Znalazłem, że musiałem wyłączyć domyślną stronę, aby to zadziałało. Oto, co zrobiłem.

$ sudo vi /etc/apache2/sites-available/jenkins

I wstaw to do pliku:

<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName mydomain.com
  ServerAlias mydomain
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
  <Proxy *>
        Order deny,allow
        Allow from all
  </Proxy>
</VirtualHost>

Następnie należy włączyć / wyłączyć odpowiednie strony:

$ sudo a2ensite jenkins
$ sudo a2dissite default
$ sudo service apache2 reload
Mam nadzieję, że to komuś pomoże.
 8
Author: Louth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-29 05:45:27

Odkryłem to metodą prób i błędów. Jeśli Twoja konfiguracja określa nazwę serwera, wtedy twoja Dyrektywa VirtualHost będzie musiała zrobić to samo. W poniższym przykładzie awesome.example.com oraz amazing.example.com oba zostaną przekazane do jakiejś lokalnej usługi działającej na porcie 4567.

ServerName example.com:80

<VirtualHost example.com:80>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName awesome.example.com
  ServerAlias amazing.example.com
  ProxyPass / http://localhost:4567/
  ProxyPassReverse / http://localhost:4567/
</VirtualHost>

Wiem, że to nie jest dokładnie odpowiedź na pytanie, ale umieszczam go tutaj, ponieważ jest to najlepszy wynik wyszukiwania dla Apache port forwarding. Więc pomyślałem, że kiedyś komuś to pomoże.

 4
Author: Ethan B Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-24 20:05:55

Musisz się upewnić, że proxy jest włączony na serwerze. Możesz to zrobić za pomocą następujących poleceń:

  a2enmod proxy
  a2enmod proxy_http

  service apache2 restart
 4
Author: Aswin Mohanan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 02:32:36

Jeśli nie musisz używać proxy do JBoss i mydomain. com: 8080 może być "narażony" na świat, to zrobiłbym to.

<VirtualHost *:80>
  ServerName mydomain.com
  Redirect 301 / http://mydomain.com:8080/
</VirtualHost>
 2
Author: Michael Rice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 23:12:16

To może być stare pytanie, ale oto co zrobiłem:

W a .plik conf załadowany przez apache:

<VirtualHost *:80>
  ServerName something.com
  ProxyPass / http://localhost:8080/
</VirtualHost>

Wyjaśnienie: nasłuchuje wszystkich żądań do Portu 80 lokalnej maszyny. Jeśli poprosiłem o "http://something.com/somethingorother", prześlij to żądanie do " http://localhost:8080/somethingorother". Powinno to działać dla zewnętrznego użytkownika, ponieważ, zgodnie z dokumentami, mapuje zdalne żądanie do przestrzeni lokalnego serwera.

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 uruchom ponownie apache

sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart
 2
Author: Teeeeeeeeeeeeeeeeeeeeeeeeeeeej,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 01:25:48

Po prostu użyj odwrotnego Proxy w konfiguracji apache (bezpośrednio):

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar

Tutaj znajdziesz dokumentację apache jak używać mod

 1
Author: Julian Dehne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-13 10:44:38

Apache obsługuje hosty wirtualne oparte na nazwach i IP. Wygląda na to, że używasz obu, co prawdopodobnie nie jest tym, czego potrzebujesz.

Myślę, że rzeczywiście próbujesz skonfigurować hosting wirtualny oparty na nazwach , A do tego nie musisz podawać adresu IP.

Spróbuj powiązać ze wszystkimi adresami IP, chyba że naprawdę chcesz hosting wirtualny oparty na ip . Może tak być w przypadku, gdy serwer ma kilka adresów IP i chcesz obsługiwać różne strony na różnych adresach. Najczęstszą konfiguracją są (zgaduję) hosty wirtualne oparte na nazwach.

 0
Author: Martin Vilcans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 23:36:37

Potrzebujesz 2 rzeczy:

  1. Dodaj ServerAlias www.mydomain.com do swojego config
  2. Zmień swój proxypass na ProxyPassMatch ^(.*)$ http://localhost:8080/example$1, Aby prawdopodobnie nie zakłócać mod_dir i końcowych ukośników.
 0
Author: Jon Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 23:45:35

Wszystkie są doskonałym wglądem w dostęp do portów za pośrednictwem nazw domen na serwerach wirtualnych. Nie zapomnij jednak włączyć serwerów wirtualnych; można to skomentować:

NameVirtualHost *:80
<Directory "/home/dawba/www/">
 allow from all
</Directory>

Uruchamiamy WSGI z serwerem Apache w domenie sxxxx.com oraz serwer golang działający na porcie 6800. Niektóre zapory zdają się blokować nazwy domen z portami. To było nasze rozwiązanie:

<VirtualHost *:80>
 ProxyPreserveHost On
 ProxyRequests Off
 ServerName wsgi.sxxxx.com
 DocumentRoot "/home/dxxxx/www"
  <Directory "/home/dxxx/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
 ScriptAlias /py/ "/home/dxxxx/www/py/"
 WSGIScriptAlias /wsgiprog /home/dxxxx/www/wsgiprog/Form/Start.wsgi
</VirtualHost>

<VirtualHost *:80>
 ProxyPreserveHost On
 ProxyRequests Off
 ServerName sxxxx.com 
 ServerAlias www.sxxxx.com
 ProxyPass / http://localhost:6800/
 ProxyPassReverse / http://localhost:6800/
</VirtualHost>
 0
Author: user2099484,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-13 21:46:25

Mój apache słucha 2 różnych portów,

Listen 8080
Listen 80  

Używam 80, gdy chcę przezroczystego adresu URL i nie umieszczam portu po adresie URL przydatne 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 dev"

 0
Author: Miguel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-22 13:24:26

To działa również w ISPConfig. W liście witryn wejdź do domeny, kliknij na zakładkę Opcje, Dodaj te linie:;

ProxyPass / http://localhost:8181/
ProxyPassReverse / http://localhost:8181/

Następnie przejdź do strony internetowej i wolaa:) to działa protokół HTTPS zbyt.

 0
Author: kodmanyagha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-07 18:05:30