Is there a way to prevent this, and only make https://control.example.com:2054/ while preventing https://example.com:2054/ from accessing?
Sim. A maneira mais simples é usar o Nginx como um proxy reverso . Uma visão geral básica do uso do Nginx nessa capacidade pode ser encontrada aqui .
Em resumo, você desejaria configurar dois blocos de servidores semelhantes aos seguintes:
# Block access to example.com:2054, assuming Nginx is servicing that port.
#
server {
listen 2054;
server_name example.com;
# 404 - Not Found is returned, but 403 - Forbidden is another option
location / {
return 404;
}
}
# another (unblocked) virtual host on the same port e.g. control.example.com:2054
#
server {
listen 2054;
server_name control.example.com;
# Proxy our web data
location / {
proxy_pass http://10.0.0.10:3005;
}
}
Este exemplo supõe que duas portas diferentes estão em uso, já que esta configuração é fácil de lidar. A porta na qual você deseja acessar publicamente o serviço deve ser encaminhada, a porta de serviço interna (real) não deve. O proxy_pass
IP deve (obviamente) ser o IP do PC executando o serviço que você deseja acessar.
Caso a solução acima não seja adequada para você, observe que você pode fazer algo com iptables ou similar.