J'ai du mal avec ça pendant un certain temps et je fais définitivement quelque chose de mal.
J'ai un serveur Apache et un serveur JBoss sur la même machine. Je voudrais rediriger le trafic de mydomain.com vers JBoss localhost: 8080 / exemple. Le DNS est actuellement configuré pour mydomain.com et il ira directement au port 80 une fois entré dans le navigateur.
Ma question est de savoir comment rediriger vers un port différent lorsqu'un certain nom de domaine arrive à 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 avec suggestions - Toujours pas de transfert vers 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>
Réponses:
Vous devez laisser de côté le domaine
http://example.com
dans ProxyPass et ProxyPassReverse et le laisser tel quel/
. De plus, vous devez laisser le/
à la fin de l'example/
endroit où il redirige. De plus, j'ai eu des problèmes avechttp://example.com
vshttp://www.example.com
- seul le www fonctionnait jusqu'à ce que je crée le ServerName www.example.com et le ServerAlias example.com. Essayez ce qui suit.Après avoir effectué ces modifications, ajoutez les modules nécessaires et redémarrez apache
la source
/usr/sbin/setsebool -P httpd_can_network_connect 1
J'ai résolu ce problème avec le code suivant:
J'ai également utilisé:
la source
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.
Et insérez ceci dans le fichier:
Ensuite, vous devez activer / désactiver les sites appropriés:
J'espère que ça aide quelqu'un.
la source
J'ai découvert cela par essais et erreurs. Si votre configuration spécifie un ServerName, votre directive VirtualHost devra faire de même. Dans l'exemple suivant, awesome.example.com et amazing.example.com seraient tous deux redirigés vers un service local fonctionnant sur le port 4567.
Je sais que cela ne répond pas exactement à la question, mais je la mets ici car c'est le premier résultat de recherche pour la redirection de port Apache. Alors je pense que ça aidera quelqu'un un jour.
la source
*:80
au lieu deexample.com:80
signifiait que le port ne serait pas redirigé.Vous devez vous assurer que le proxy est activé sur le serveur. Vous pouvez le faire en utilisant les commandes suivantes:
la source
C'est peut-être une vieille question, mais voici ce que j'ai fait:
Dans un fichier .conf chargé par apache:
Explication: Écoutez toutes les demandes sur le port 80 de la machine locale. Si j'ai demandé "
http://something.com/somethingorother
", transmettez cette demande à "http://localhost:8080/somethingorother
". Cela devrait fonctionner pour un visiteur externe car, selon la documentation, il mappe la demande distante à l'espace du serveur local.J'utilise Apache 2.4.6-2ubuntu2.2, donc je ne suis pas sûr de savoir comment le "-2ubuntu2.2" affecte l'applicabilité plus large de cette réponse.
Après avoir effectué ces modifications, ajoutez les modules nécessaires et redémarrez apache
la source
Si vous n'avez pas besoin d'utiliser un proxy pour JBoss et que mydomain.com:8080 peut être "exposé" au monde, alors je le ferais.
la source
Utilisez simplement un proxy inverse dans votre configuration apache (directement):
Regardez ici pour la documentation Apache sur la façon d'utiliser le mod
la source
Mon apache écoute 2 ports différents,
J'utilise le 80 quand je veux une URL transparente et ne mets pas le port après l'URL utile pour les services Google qui n'autorisent pas l'URL locale?
Mais j'utilise le 8080 pour le développement interne où j'utilise le port comme référence pour un "environnement de développement"
la source
Apache prend en charge les hôtes virtuels basés sur les noms et les adresses IP. Il semble que vous utilisiez les deux, ce qui n'est probablement pas ce dont vous avez besoin.
Je pense que vous essayez en fait de configurer un hébergement virtuel basé sur le nom , et pour cela, vous n'avez pas besoin de spécifier l'adresse IP.
Essayez <VirtualHost *: 80> pour vous lier à toutes les adresses IP, sauf si vous voulez vraiment un hébergement virtuel basé sur IP . Cela peut être le cas si le serveur a plusieurs adresses IP et que vous souhaitez desservir différents sites sur des adresses différentes. La configuration la plus courante est (je suppose) des hôtes virtuels basés sur le nom.
la source
Vous avez besoin de 2 choses:
ServerAlias www.mydomain.com
à votre configurationProxyPassMatch ^(.*)$ http://localhost:8080/example$1
, pour éventuellement empêcher mod_dir et les barres obliques de fin d'interférer.la source
Tous sont d'excellents renseignements sur l'accès aux ports via des noms de domaine sur des serveurs virtuels. N'oubliez pas, cependant, d'activer les serveurs virtuels; cela peut être commenté:
Nous exécutons WSGI avec un serveur Apache sur le domaine sxxxx.com et un serveur golang fonctionnant sur le port 6800. Certains pare-feu semblent bloquer les noms de domaine avec des ports. C'était notre solution:
la source
Cela fonctionne également dans ISPConfig. Dans la liste de sites Web, entrez dans un domaine, cliquez sur l'onglet Options, ajoutez ces lignes:;
Ensuite, allez sur le site Web et wolaa :) Cela fonctionne également avec le protocole HTTPS.
la source
Essaye celui-là-
la source