web-dev-qa-db-fra.com

Une adresse IP, deux sites Web, sur deux ordinateurs - Détails du besoin

Cette question a déjà été postée par un autre utilisateur mais aucune réponse détaillée n’a été donnée. Voici le lien vers la question initiale - ne adresse IP, deux sites Web, sur deux machines

J'ai deux machines chacune avec Apache2 installé et adresses IP statiques.

Serveur 1

example.com
static ip = 192.168.0.6
Apache2 running on ports 80 and 443 fine
ufw and router firewall are open on ports 80 and 443 as well

Serveur 2

domain name = myhost01.example.com 
static ip = 192.168.0.7
Apache2 running on 8080(HTTP) and 8443(HTTPS) 
ufw and router firewall are open on ports 8080 and 8443

Lorsque je vais sur {http) www.example.com ou (https) www.example.com - je reçois correctement le contenu Web du serveur 1

Lorsque je vais sur myhost01.example.com:8080 ou myhost01.example.com:8443 - Je reçois correctement le contenu Web du serveur 2

Je voudrais inverser le serveur proxy 2 afin qu'un utilisateur accède à http: // myhost01 .example.com/il reçoive le contenu de http: // myhost01. example.com:8080/, masquant le numéro de port. Actuellement, je reçois un message d'erreur "impossible de se connecter/page Web introuvable", lorsque j'essaie d'accéder à myhost01 (point) exemple (point) com

Dans le fichier d'hôte virtuel pour example.com, j'ai utilisé ce qui suit:

ProxyRequests Off

ProxyPass / http://myhost01. example.com:8080/
ProxyPassReverse / http://myhost01 .example.com:8080/

Les modules proxy et proxy_http sont activés dans Apache2

Des idées sur la façon de faire fonctionner cela?

P.S. - Des espaces ont été ajoutés aux URL car je ne dispose pas de suffisamment de points de réputation pour publier plus de deux URL.

** UPDATE - Voir les notes ci-dessous

Server1 - example.com - FICHIER VHOST

<VirtualHost *:80>

    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /myweb/cmweb/Apache/http

#ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://myhost01.example.com:8080/
ProxyPassReverse / http://myhost01.example.com:8080/

        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /myweb/cmweb/Apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all

        </Directory>

        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
        LogLevel warn

</VirtualHost>

Proxy essayé avec 192.168.0.7 remplaçant myhost01 (point) exemple (point) com en vain

Server2 - exemple myhost01 (point) (point) avec fichier VHOST

 <VirtualHost *:8080>

    ServerAdmin [email protected]
    ServerName myhost01.example.com
    ServerAlias myhost01 myhost01.example.com

    DocumentRoot /mwdhost/cmweb/Apache/http

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /mwdhost/cmweb/Apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined
    LogLevel warn

</VirtualHost>

myhost01 a été ajouté à Un enregistrement de domaine peut créer un NSLOOKUP et obtenir une adresse IP externe correcte pour myhost01.example.com

Ci-dessous est le Apache Error.log pour server1 - Peut-être un indice à mes problèmes?

Sun Feb 02 18:24:52 2014] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 54.43.138.12:8080 (myhost01.example.com) failed
[Sun Feb 02 18:24:52 2014] [error] ap_proxy_connect_backend disabling worker for (myhost01.example.com)
[Sun Feb 02 18:24:53 2014] [error] proxy: HTTP: disabled connection for (myhost01.example.com) 
[Mon Feb 03 07:33:54 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
3
Cmweb

Suggestions:

Vérifié que server1 (example.com) peut rechercher et obtenir un enregistrement DNS correct pour myhost01.example.com?

Vos serveurs ont-ils chacun une adresse IP publique et une adresse IP interne? Ou est-ce que c'est comme la question liée que vous avez une IP?

Est-ce que je sens un routeur bon marché avec une adresse IP, exécute nat et redirection de port sur les ports mentionnés?

  • C'est souvent le cas avec les routeurs bon marché qu'ils ont du mal à combiner nat et forwardport de port en utilisant des adresses externes pour atteindre d'autres machines internes. Certains échouent aussi volontairement car il est déconseillé d’envoyer toute votre charge interne via votre routeur passerelle/nat.

Les deux enregistrements DNS (myhost1.example.com et example.com) indiquent la même adresse IP publique?

  • oui, et c'est intentionnel et correct, mais que se passe-t-il?

    • Lorsque l'instance Apache voudra rechercher où établir la connexion proxy, on lui indiquera l'adresse IP externe de myhost01.example.com renvoyant au routeur susceptible de faire échouer la connexion. Supposons que c'est le cas.

Nous avons trouvé une erreur possible, comment pouvons-nous la contourner?

  • Comme l'adresse IP externe du DNS n'aidera pas server1 à trouver l'adresse IP locale sur laquelle passer par le réseau local, avons-nous besoin d'un moyen de le faire, mais heureusement, il existe plusieurs façons de se rendre à Rome.

    • Une solution serait d'utiliser l'adresse IP locale de server2 dans ProxyPass.
    • Une autre façon serait simplement de remplacer vos réponses DNS. Cela peut être fait sur server1 qui sert de proxy. Editez le fichier /etc/hosts. Quelques informations supplémentaires sur le fichier hôtes, pouvez-vous lire ici.
    • Une troisième solution serait de créer des enregistrements DNS supplémentaires pour vos serveurs locaux. Par exemple, une entrée nommée par exemple. local2.exemple.com pointant vers 192.168.0.7.

Remarque. Si vous vous le demandiez, il est tout à fait possible d'avoir plus d'adresses IP publiques et de les exécuter sur un petit sous-réseau, par exemple. qui servira également d'interconnexion. Pensé que ce n'est pas très recommandé de le faire.

Clause de non-responsabilité

Cette réponse est basée sur une hypothèse expérimentée: une configuration complète, des journaux Apache et des erreurs manquent dans la réponse. N'hésitez pas à vous améliorer.

0
Anders F. U. Kiær

Votre approche semble exagérée.

Tous les serveurs Web modernes vous permettront de lier plusieurs sites Web à une seule adresse IP et à un seul port. Ceci est fait en configurant le nom d'en-tête de l'hôte pour les sites respectifs.

De plus, vous pouvez pointer plusieurs sites SSL vers la même adresse IP et le même port (443 ou autre) à l'aide de SNI. Les navigateurs plus anciens ne supportent pas SNI, mais cela ne vous concerne peut-être pas.

Connecter l'un des sites au port 8080, puis câbler un proxy par dessus, est le chemin le plus long, à moins qu'il ne soit explicitement nécessaire que le port 8080 soit exposé à un client.

Étant le type occupé que je suis, je ne passe pas beaucoup de temps sur la configuration d’Apache à moins d’en avoir absolument besoin. Autrement, j'utilise Virtualmin ( http://www.webmin.com/virtualmin.html ) et il gère 85% du travail de nettoyage d'une telle configuration.

0
Xavier J