
Portanto, estou executando várias páginas da Web em meu VPS e utilizo os hosts virtuais do Apache para garantir que qualquer pessoa que acesse meu site seja enviada ao site apropriado. Infelizmente, algo que notei depois de configurar uma instância Jenkins é que posso ir para qualquer um desses domínios que apontam para meu VPS em diferentes vhosts e anexar :8080 a eles para chegar ao servidor Jenkins. Gostaria de encontrar uma maneira de evitar isso e permitir que eu acesse apenas o servidor Jenkins via ip:port. Qualquer ajuda é muito apreciada!
Como pergunta adicional, há alguma maneira de abandonar as tentativas de conexão ao ip: 80 também? Obrigado.
Responder1
Posso acessar qualquer um desses domínios [...] e anexar
:8080
a eles para chegar ao servidor Jenkins. Gostaria de encontrar uma maneira de evitar isso e permitir que eu acesse apenas o servidor Jenkins viaip:port
.
O primeiro passo, conforme mencionado nos comentários, é bloquear o acesso público your_ip:8080
(o Jenkins ainda pode rodar internamente nesta porta). Como você fará isso provavelmente dependerá do seu VPS (embora o iptables ou a interface do firewall possam ser um bom lugar para começar).
A segunda etapa é tornar o host virtual Apache "padrão" para a porta :XX
aproxy reverso(usando o Apachemod_proxymódulo) e defina o destino do proxy como uma referência (local) para Jenkins operando em port :8080
. Esse proxy reverso é o que permitiria o acesso ao Jenkins, mesmo que de outra forma fosse bloqueado publicamente. Você provavelmente estará especialmente interessado nonotas oficiais da wiki do Jenkins sobre como executar o Jenkins por trás do Apache.
Notas
A razão pela qual você deseja que seu proxy reverso seja o host "padrão" para uma determinada porta é porque, com o Apache e hosts virtuais baseados em nome, esse host "padrão" (normalmente o primeiro host virtual com port
:XX
) é retornado quando um IP é Requeridos.A porta do seu proxy reverso é definida pela entrada do host virtual. No entanto, se o Apache e o Jenkins operarem no mesmo servidor, esta porta não poderá ser a mesma em que o Jenkins opera (por exemplo,
:8080
).Não se esqueça de adicionar a
Listen
diretiva adequada para port:XX
na configuração do Apache.Se você usar porta
:443
(SSL), seu certificado para essa porta deverá incluir seu IP como um nome válido. Caso contrário, você provavelmente receberá avisos de certificado.
Para ser claro, port :XX
é apenas um exemplo/espaço reservado e significa qualquer porta que você escolher.
Existe alguma maneira de abandonar as tentativas de conexão
ip:80
também?
Tenha o Apache apenas Listen
em portas diferentes de :80
. No entanto, isso interromperá todo :80
o acesso normal da porta HTTP aos seus sites (ou seja, se um usuário não digitar explicitamente https://
em seu navegador ou visitar usando um https://
link explícito, ele não conseguirá se conectar).
Como compromisso, você pode usar a mesma técnica acima (com um host "padrão" em port :80
) para redirecionar solicitações (em vez de proxy) para seu site principal ou para outro lugar (por exemplo, https://www.google.com
).