Eu hospedo dois sites em uma instância Apache2 que roda em um Raspberry Pi3 (mais informações sobre versões e configurações abaixo): Website1 é um site estático que codifiquei do zero, enquanto website2 roda em Wordpress.
Eu morava em um apartamento onde o ISP fornecia um IP público estático, mas recentemente me mudei para uma nova casa, onde o ISP não oferece essa opção. Tenho tentado reconfigurar tudo, mas não consigo fazer tudo funcionar novamente.
Configurações
Eu tenho um Raspberry Pi 3 rodando a versão mais recente do Raspbian
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
No meu roteador (modelo Alcatel-Lucent G240W-B
:) eu abriporta XX para httpeporta YY para ssh(Não estou usando portas padrão para aumentar a segurança)
Application Name | WAN Connection | WAN Port | LAN Port | Internal Client | Protocol | Status
Customer settings | {my_wan_connection} | XX~XX | XX~XX | 192.168.1.100 | TCPorUDP | ACTIVE
Customer settings | {my_wan_connection} | YY~YY | YY~YY | 192.168.1.100 | TCPorUDP | ACTIVE
Estou executando o apache2
$ apache2 -v
Server version: Apache/2.4.25 (Raspbian)
Server built: 2019-08-19T19:25:31
com dois sites ativados
$ sudo apache2ctl -S
VirtualHost configuration:
*:XX is a NameVirtualHost
default server mydomain.ddns.net (/etc/apache2/sites-enabled/website1.com.conf:1)
port XX namevhost mydomain.ddns.net (/etc/apache2/sites-enabled/website1.com.conf:1)
alias website1.com
alias www.website1.com
port XX namevhost mydomain.ddns.net (/etc/apache2/sites-enabled/website2.com.conf:1)
alias www.wesbiste2.com
alias wesbiste2.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: MODSEC_2.5
Define: MODSEC_2.9
User: name="www-data" id=33
Group: name="www-data" id=33
Este é meuports.conf
$ sudo cat ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 0.0.0.0:XX
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
O/etc/apache2/sites-enables/website1.conf
<VirtualHost *:XX>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin [email protected]
ServerName mydomain.ddns.net
ServerAlias website1.com
ServerAlias www.website1.com
DocumentRoot /var/www/website1/public_html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
E o O/etc/apache2/sites-enables/website2.conf
<VirtualHost *:XX>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin [email protected]
ServerName mydomain.ddns.net
ServerAlias www.website2.com
ServerAlias website2.com
DocumentRoot /var/www/website2/public_html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Eu configurei um DNS dinâmico com NoIP (mydomain.ddns.net) que é atualizado através do meu roteador
O que funciona e o que não funciona
O SSH funciona bem e posso me conectar ao meu raspberry pi dentro e fora da minha rede doméstica - quando verifico se a porta YY está aberta a partir de uma ferramenta de verificação de porta, recebo uma resposta positiva
HTTP é mais problemático: apesar da porta estar fechada (pelo menos de acordo com os verificadores de porta), posso ver o site1 (que é o servidor padrão do Apache) de
- endereço IP interno: 192.168.1.100:XX
- endereço IP público: {my-public-ip}:XX
- nome de host DNS dinâmico meudomínio.ddns.net
Porém, como desta forma só consigo acessar o site1, e não o site2, tentei desabilitar o site1 ( sudo a2dissite website1.com.conf
) e reiniciar o apache ( sudo systemctl restart apache2
)
$ sudo apache2ctl -S
VirtualHost configuration:
*:XX mydomain.ddns.net (/etc/apache2/sites-enabled/website2.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: MODSEC_2.5
Define: MODSEC_2.9
User: name="www-data" id=33
Group: name="www-data" id=33
No entanto, ainda não consigo acessar o site2 pelo IP interno ou público, nem pelo nome do host DDNS.
Alterando URL do Wordpress
Eu pensei que isso poderia estar relacionado ao Wordpress e de fato descobriEste artigoe segui as instruções para [alterar a URL diretamente no banco de dados][2]. Na verdade, os valores 'home' e 'url' eram iguais ao meu antigo IP estático público, então mudei para o meu DDNS (myhostname.ddns.net). No entanto, o site ainda está inacessível
Para sua informação, minha primeira prioridade seriapara poder acessar o site2e veja seu conteúdo, seja através de IP interno ou externo, ou DDNS hostnmae.
Responder1
Então acho que entendi... talvez... O problema pode ser a maneira como você está testando isso. No computador que você está usando para testar (não no RPi), edite seu arquivo host para apontar www.website1.com e www.website2.com para o endereço IP interno do seu RPi (enquanto você estiver na mesma rede).
Instruções sobre o arquivo hosts: https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/
Em seguida, aponte seu navegador para www.website1.com e depois para www.website2.com.
Se funcionar, altere seu arquivo hosts para apontar esses sites para seu endereço IP externo.
Explicação: Parte do handshake entre o navegador e o servidor web inclui o site que você está solicitando. Isso permite que mais de um site seja hospedado no mesmo servidor web. Como sua configuração do Apache indica os aliases como www.website1.com e www.website2.com, mas você está solicitando seu endereço IP no site. O Apache respondeu com www.website1.com porque esse está definido como seu site padrão.
Responder2
No final foi a configuração do roteador: a porta de entrada (porta WAN) deveria ser configurada para 80, e a porta interna (porta LAN) para qualquer porta que meu roteador estivesse escutando.