web-dev-qa-db-fra.com

Comment puis-je diriger un domaine vers plusieurs ports en fonction du répertoire sur lequel je navigue?

J'ai un serveur en cours d'exécution à la maison. Ce serveur s'exécute sur une adresse IP publique définie sur mon domaine en tant qu'enregistrement A.

Tout fonctionne actuellement.

Je lance Apache pour un petit site web avec Confluence.

Apache: 80  
Confluence: 8090  

Ce que je veux savoir, c'est comment puis-je le configurer si je navigue jusqu'à:

domain.net/confluence

Apache saura-t-il qu'il doit rediriger cela vers le port 8090? Est-ce simplement géré en configurant un hôte virtuel pour la même adresse IP, mais en le pointant vers ce répertoire et en le faisant écouter sur 8090?

3
Marty Lavender

J'ai donc compris que je pouvais le faire avec nginx, que j'avais quand même prévu de configurer.

C'est ce que j'ai fait!

Ajouté ceci sous nginx/sites-available

    server {
    listen www.thelavender.net:80;
    server_name www.thelavender.net;
    location /confluence {
        proxy_set_header X-Forwarded-Host $Host;
        proxy_set_header X-Forwarded-Server $Host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8090/confluence;
    }
}

copié ceci dans nginx/sites-enabled

dans mon conf/server.xml pour Confluence, j'ai ajouté ce qui suit:

proxyName="www.xxxxxxx.net" proxyPort="80" />

à la fin du bloc de code suivant:

<Connector port="8090" connectionTimeout="20000" redirectPort="8443"
            maxThreads="48" minSpareThreads="10"
            enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
            protocol="org.Apache.coyote.http11.Http11NioProtocol"

Redémarrage de Confluence et de Nginx et BOOM !!! Nginx transfère les ports 8090 à 80 et je n'ai plus besoin d'utiliser l'URL moche avec le port !!

SUCRÉ!

UPDATE

Je voulais revenir et mettre à jour ceci car j'ai trouvé un meilleur moyen de configurer mes blocs de serveur pour plusieurs applications s'exécutant sous le même domaine. Dans mon cas, je voulais exécuter Confluence et JIRA derrière le même domaine.

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

server_name www.example.com;

location / {
    try_files $uri $uri/ =404;
}

location /jira/ {
   proxy_set_header X-Forwarded-Host $Host;
   proxy_set_header X-Forwarded-Server $Host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://192.168.1.2:8080;
   }

location /confluence/ {
   proxy_set_header X-Forwarded-Host $Host;
   proxy_set_header X-Forwarded-Server $Host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://localhost:8090;
   client_max_body_size 10M;
}
}

Ou même plus simple

server {
listen 80;

server_name www.example.com;

location /confluence {
    proxy_set_header X-Forwarded-Host $Host;
    proxy_set_header X-Forwarded-Server $Host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8090/confluence;
}

location /jira {
    proxy_set_header X-Forwarded-Host $Host;
    proxy_set_header X-Forwarded-Server $Host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080/jira;
    client_max_body_size 10M;
}
}

Turdah !!!!

2
Marty Lavender