Como rodar múltiplos servidores web em um combo IP / port?

4

Eu comprei um Slicehost VPS (o mais barato, 256MB, rodando o Ubuntu) porque estou interessado em expandir minha experiência / compreensão de desenvolvimento web além da sala de aula. Eu espero que o Slicehost execute (1) um blog, (2) um wiki que eu possa usar para propósitos de organização privada (eu e alguns amigos), e (3) desenvolvimento, em múltiplos idiomas (Ruby, PHP, python ). O que estou percebendo é que há várias desvantagens nisso. Primeiro de tudo, eu estaria lançando um processo Apache gigante e feio para cada visitante (não que eu espere algum), e em segundo lugar, isso tornaria a configuração um pesadelo.

Existe uma maneira que eu possa executar processos Apache separados para lidar com cada programa, mas fazê-lo de uma maneira transparente à URL? Eu gostaria de poder ter blog.mywebsite.com apenas carregar os módulos relevantes e material de configuração para o tipo móvel, tendo pydev.mywebsite.com carregar apenas os módulos / config para um apache executando python e railsdev.mywebsite. com executado no Apache / Passenger ou qualquer outra coisa. Eu entendo como fazer isso se estou disposto a ter URLs como mywebsite.com:8081/, mywebsite.com:8082/, etc., mas existe uma maneira de ter um servidor escutando * .mywebsite.com: 80 e ter que passar solicitações junto aos servidores apropriados (que estão escutando na porta 8081-8084 ou mais)?

    
por ZachPruckowski 08.09.2009 / 05:07

4 respostas

5

O que você deseja é uma configuração proxy reverso . Sim, é factível. Essencialmente, o proxy reverso finge ser um servidor web para o cliente. Em seguida, com base no nome de domínio solicitado, ele pode fazer proxy da conexão com o (s) servidor (es) da Web de back end especificado.

Assim, você pode ter diferentes servidores web ouvindo em portas diferentes em 127.0.0.1 e fazer com que seu proxy reverso seja redirecionado para eles.

Os proxies reversos leves populares são verniz e libra . No entanto, até mesmo o apache pode ser configurado para ser um proxy através do mod_proxy. Idem com lighttpd e nginx.

    
por 08.09.2009 / 05:39
1

Você quer um proxy reverso, mas lembre-se de que, como está começando, não deve se preocupar muito com os processos do apache de um servidor de desenvolvimento ou com o quanto a solução é feia se seu objetivo for aprender MT Django e RoR, você provavelmente é melhor fazer vhosts separados ou ter várias instâncias em execução em portas diferentes. A configuração de um proxy reverso funcionará, mas os problemas de depuração demorarão mais, pois você não saberá se o proxy está funcionando ou, na verdade, está enviando uma solicitação incorreta. Com esse aviso em mente, você precisa fazer:  apt-get instala libapache2-mod-proxy-html  a2enmod proxy_http

e configure seu vhost padrão para algo como ...

    ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:8090/
    ProxyPassReverse / http://localhost:8090/

Em que localhost: 8090 aponta para sua instância de MT e repita o processo para diferentes vhosts.

De qualquer forma, você terá uma configuração de processo do apache feia:).

    
por 08.09.2009 / 06:42
0

Expandindo a resposta do sybreon:

Um proxy reverso é um plugin para o servidor web (no seu caso Apache) que traduz URLs em diferentes servidores, de sua escolha.

Por exemplo, se uma solicitação chegar em /Wiki/ , o Apache a verá e encaminhará sua solicitação para example.com:81 (ou o que você especificar - você pode usar um RegEx para encaminhar apenas partes ou todas as suas solicitações, - organize-o, faça o que quiser) e encaminhará o que receber.

O melhor deste método é que você também pode misturar tecnologias. Temos um site do IIS que faz um proxy reverso para o Subversion e o Apache, em duas caixas completamente diferentes, mas um espaço de endereço público.

    
por 08.09.2009 / 05:42
0

mod_proxy é a resposta que você procura. No entanto, você precisará configurar um processo do Apache para cada site. Pode ser mais eficiente na memória se você simplesmente carregar todos os módulos necessários e ativá-los conforme necessário para cada host virtual.

Apenas atente para a peculiaridade. Alguns programas podem ter problemas rodando assim.

    
por 08.09.2009 / 05:43