GNU/Linux >> Tutoriels Linux >  >> Linux

Comment rediriger des sous-domaines vers un port différent sur le même serveur ?

Solution 1 :

Solution

Voici ce que j'ai finalement trouvé après avoir été mis dans la bonne direction par Miles Erickson. Je voulais que la barre d'adresse reflète le sous-domaine/domaine d'origine de la demande et non le serveur et le port redirigés, mais il m'a mis sur la bonne voie pour trouver une solution Google en utilisant VirtualHost et j'ai finalement trouvé une solution qui incluait l'utilisation de mod_proxy .

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>

Solution 2 :

Exécutez la ligne suivante sur le terminal (spécifiez correctement votre nom de domaine et de sous-domaine)

sudo nano /etc/apache2/sites-available/subdomain.example.com.conf 

Collez le code suivant et modifiez-le selon vos besoins

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName subdomain.example.com
        ServerAlias subdomain.example.com
        ProxyRequests Off

        #ProxyPass / http://localhost:8080/
        <Location />
                ProxyPreserveHost On
                ProxyPass http://example.com:8080/
                ProxyPassReverse http://example.com:8080/
        </Location>
     # Uncomment the line below if your site uses SSL.
     #SSLProxyEngine On
</VirtualHost>

Exécutez les lignes suivantes sur le terminal (spécifiez correctement votre nom de domaine et de sous-domaine)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart

Solution 3 :

En supposant que dev.mydomain.com puisse être résolu en IP de mydomain.com, vous pouvez ajouter ce qui suit à votre httpd.conf :

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

Documentation Apache pertinente :

  1. Guide de création d'hôtes virtuels basés sur le nom
  2. Core, y compris VirtualHost et NameVirtualHost
  3. Redirection

Question connexe :redirection Apache basée sur le nom d'hôte

(Remarque :la version originale de cette réponse suggérait à tort l'utilisation de RedirectMatch, qui, comme @ChrisS l'a utilement souligné, ne peut pas analyser la partie domaine de l'URL.)

Solution 4 :

Ajoutez dans votre configuration principale de vhost les lignes suivantes :

ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/

Notez que cela nécessite mod_proxy sur Apache.

Solution 5 :

Vous recherchez mod_rewrite. Voici le lien vers la documentation d'Apache qui comprend de nombreux exemples de configurations de base et avancées.

Et si vous ne parvenez pas à interpréter la documentation vous-même, essayez d'ajouter ceci à httpd.conf :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]        
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]    

Et si ce n'est pas un exemple clair, voici également un lien vers un guide pour débutants mod_rewrite.


Linux
  1. Comment rediriger http vers https en utilisant .htaccess ?

  2. Comment rediriger stderr et stdout vers différents fichiers dans la même ligne de script ?

  3. comment démarrer le serveur tomcat sous linux?

  4. Comment puis-je exécuter une commande différente mais avec les mêmes arguments ?

  5. Comment attribuer différentes adresses IP statiques à une même machine en fonction de son OS ?

Comment arrêter un serveur de spam

Comment installer plusieurs conteneurs Discourse sur le même serveur

Comment auto-héberger plusieurs sites WordPress sur le même serveur avec Docker

Comment changer le nom d'hôte du serveur dans Ubuntu

Comment changer le port SSH dans CentOS

Comment changer le fuseau horaire sur le serveur Ubuntu 18.04 ?