GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso reindirizzare i sottodomini a una porta diversa sullo stesso server?

Soluzione 1:

Soluzione

Ecco cosa mi è finalmente venuto in mente dopo essere stato indirizzato nella giusta direzione da Miles Erickson. Volevo che la barra degli indirizzi riflettesse il sottodominio/dominio originale della richiesta e non il server e la porta reindirizzati, ma mi ha messo sulla strada giusta per cercare su Google una soluzione utilizzando VirtualHost e finalmente ho trovato una soluzione che includeva l'uso di 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>

Soluzione 2:

Esegui la seguente riga sul terminale (specifica correttamente il nome del dominio e del sottodominio)

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

Incolla il seguente codice e modificalo come richiesto

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

Esegui le seguenti righe sul terminale (specifica correttamente il nome del dominio e del sottodominio)

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

Soluzione 3:

Supponendo che dev.mydomain.com possa essere risolto nell'IP di mydomain.com, puoi aggiungere quanto segue al tuo httpd.conf:

NameVirtualHost *:80

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

Documentazione Apache rilevante:

  1. Guida alla creazione di host virtuali basati su nome
  2. Core, inclusi VirtualHost e NameVirtualHost
  3. Reindirizzamento

Domanda correlata:Reindirizzamento Apache basato sul nome host

(Nota:la versione originale di questa risposta suggeriva erroneamente l'uso di RedirectMatch, che, come ha sottolineato utilmente @ChrisS, non può analizzare la parte del dominio dell'URL.)

Soluzione 4:

Aggiungi nella tua configurazione principale del vhost le seguenti righe:

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

Nota che questo richiede mod_proxy su Apache.

Soluzione 5:

Stai cercando mod_rewrite. Ecco il link alla documentazione di Apache che include molti esempi per configurazioni di base e avanzate..

E se non sei in grado di interpretare la documentazione da solo, prova ad aggiungere questo a httpd.conf:

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

E se questo non è un chiaro esempio, ecco anche un link a una guida per principianti di mod_rewrite.


Linux
  1. Come aggiornare un server Ubuntu 7.04 ("The Perfect Setup" + ISPConfig) a Ubuntu 7.10

  2. come avviare il server Tomcat in Linux?

  3. Come assegnare diversi indirizzi IP statici alla stessa macchina a seconda del suo sistema operativo?

  4. Come eseguire il port forwarding da un IP a un altro IP nella stessa rete?

  5. Come installo 2 diverse versioni di Java sulla stessa macchina da EPEL

Come fermare un server di spamming

Come installare più contenitori di discorsi sullo stesso server

Come ospitare autonomamente più siti WordPress sullo stesso server con Docker

Come modificare il nome host del server in Ubuntu

Come modificare la porta SSH in CentOS

Come modificare il fuso orario su Ubuntu 18.04 Server?