![Torne o site Apache hospedado em um computador local acessível de fora](https://rvso.com/image/1615259/Torne%20o%20site%20Apache%20hospedado%20em%20um%20computador%20local%20acess%C3%ADvel%20de%20fora.png)
Eu tenho um servidor Apache2 funcionando hospedando um site Moodle na LAN que pode ser acessado através do http://192.x.x.x/moodle
. Eu também tenho um servidor Linux localizado entre a Internet e a LAN com um endereço IP ativo 124.x.x.x
. Quero tornar o site moodle acessível pela Internet. É possível?
O servidor apache2 local tem uma configuração funcional para servir moodle.domain.com
. O servidor Linux ativo também possui uma hospedagem de servidor apache2 domain.com
. Ambos estão rodando Debian Linux
Tentei redirecionar moodle.domain.com
para 192.x.x.x
o arquivo do servidor Linux ativo, /etc/hosts
mas ainda assim, domain.com
é o que recebo quando acesso moodle.domain.com
de fora.
Quando acesso de fora, configuro primeiro o arquivo host em um laptop Windows para redirecionar moodle.domain.com
para o endereço IP ativo do servidor Linux.
O que estou perdendo aqui?
Responder1
Eu fiz funcionar implementando o proxy reverso Apache no servidor Linux Apache ativo.
Para quem procura a mesma solução, aqui está um trecho do meu /etc/apache2/sites-enabled/000-default.conf
:
<VirtualHost *:80>
ServerName moodle.domain.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://10.5.1.100:8080/
ProxyPassReverse / http://10.5.1.100:8080/
</VirtualHost>
O servidor Apache local que hospeda o site Moodle real deve estar escutando na porta 8080
:
<VirtualHost *:8080>
ServerAdmin webmaster@local
DocumentRoot /srv/www/moodle
ServerName moodle.domain.com
ServerAlias moodle.domain.com
<Directory /srv/www/moodle>
#Allowoverride all ###Uncomment if required
</Directory>
</VirtualHost>
Outra configuração específica do Moodle que precisei ajustar é o arquivo de configuração do Moodle /srv/www/moodle/config.php
:
$CFG->wwwroot = 'http://moodle.domain.com';
O Moodle inicialmente o configurou $CFG->wwwroot = 'http://10.5.1.100/moodle';
durante a instalação. Se você não possui instalação do Moodle, ignore esta parte
Responder2
Antes de começarmos, quero ter certeza de que você entende que não é a opção mais segura fazer isso. Especialmente abrindo portas do roteador, portanto, certifique-se de entender sobre firewall.
Como você tem um IP dinâmico (presumo), você não pode simplesmente vinculá-lo ao seu domínio. Isso ocorre porque seu IP acabará mudando a cada duas horas.
Esta resposta é baseada nas opções de roteador mais comuns disponíveis.
- Você deve encontrar seu servidor apache nas conexões do roteador e ativar o encaminhamento de porta (80) ou, se você entender o que está fazendo e tiver um firewall adequado inicializado, você pode simplesmente abrir todas as portas do roteador (eu recomendo fortemente que você não faça isso a menos que você tenha um firewall)
- Use um serviço DNS gratuito como Dyn DNS (os roteadores mais recentes suportam isso imediatamente, basta verificar as configurações e configurar uma conta).
- Crie um subdomínio DNS gratuito.
- Crie uma regra DNS (CNAME) do seu domínio principal. e aponte-o para o subdomínio criado pelo dyndns. Por exemplo moodle.example.com -> trex-moodle.exampledyndns.com.
- Configure seu apache e adicione seu subdomínio dyndns.
Usar um DNS grátis em seu roteador é a melhor opção, já que seu roteador gira o IP a cada duas horas, se você estiver usando esse serviço, seu domínio dyn DNS estará sempre apontando para seu endereço IP residencial.
Editar
Em relação ao primeiro comentário, você precisará de um proxy nginx em execução no seu servidor Linux principal. O nginx pode ser usado para hospedar o site domain.com
e moodle.domain.com que está hospedado em diferentes servidores na mesma rede.
Certifique-se de que você pode acessar o site do moodle a partir do seu servidor Linux. (Usar IP de ping)
Agora no seu nginx você precisará ter a seguinte configuração:
server {
listen 80;
server_name domain.com;
root /your/domain.com/path/goes/here ;
}
server {
listen 80;
server_name moodle.trex.com;
location / {
proxy_pass http://192.X.X.X:80; #Your apache2 server local IP address
}
}
Para que isso funcione, os servidores Linux e o servidor Apache2 devem estar na mesma rede 192.XXX.