178 votes

Apache redirige vers un autre port

J'ai lutté avec pendant un certain temps et je suis certainement fait quelque chose de mal.

J'ai du serveur apache et un serveur JBoss sur la même machine. J'aimerais rediriger le trafic de mydomain.com pour JBoss localhost:8080/exemple. Le DNS est actuellement le programme d'installation pour mydomain.com et il va aller tout droit vers le port 80 de la saisie dans le navigateur.

Ma question est comment puis-je rediriger vers un port différent lorsqu'un certain nom de domaine vient d'apache (dans ce cas, "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> 

Mise à JOUR w/ Suggestions - Toujours pas de redirection sur le 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> 

259voto

2AMTech Points 451

Je N'ai pas assez de rep à tout simplement laisser un commentaire, donc pensé que je répondrais avec ce qui a fonctionné pour moi. Vous devez quitter le domaine "http://mydomain.com" dans la directive ProxyPass et ProxyPassReverse et laissez sur "/". En outre, vous devez laisser le "/" à la fin de l'exemple/" là où elle est la redirection. Aussi, j'ai eu quelques difficultés avec "http://mydomain.com" vs. "http://www.mydomain.com" - seulement la www travaillé jusqu'à ce que j'ai fait le ServerName www.mydomain.com et la directive ServerAlias mydomain.com. Donner à la suite d'un aller.

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

32voto

Renan Vizza Points 51

J'ai résolu ce problème avec le code suivant:

 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>
 

J'ai aussi utilisé:

 a2enmod proxy_http
 

12voto

Louth Points 2943

Je voulais faire exactement cela pour pouvoir accéder à Jenkins à partir du domaine racine.

J'ai trouvé que je devais désactiver le site par défaut pour que cela fonctionne. Voici exactement ce que j'ai fait.

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

Et insérez ceci dans le fichier:

 <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>
 

Ensuite, vous devez activer / désactiver les sites appropriés:

 $ sudo a2ensite jenkins
$ sudo a2dissite default
$ sudo service apache2 reload
 

J'espère que ça aide quelqu'un.

2voto

Michael Rice Points 944

Si vous n'avez pas à utiliser un proxy pour JBoss et que mydomain.com:8080 peut être "exposé" au monde entier, je le ferais.

 <VirtualHost *:80>
  ServerName mydomain.com
  Redirect 301 / http://mydomain.com:8080/
</VirtualHost>
 

2voto

Julian Dehne Points 21

Utilisez simplement un proxy inverse dans votre configuration d'apache (directement):

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

Regardez ici pour la documentation apache sur l'utilisation du mod

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X