Suponho que o seu aplicativo listando por http
solicitações na porta 6040 está sendo executado na mesma máquina que seu servidor nginx. Se o aplicativo estiver listando para https
solicitações na porta 6040, consulte nginx https upstreams em vez disso.
Crie um servidor que escute na porta 443 em seu ip público e atue como um proxy para seu aplicativo interno na porta 6040.
/etc/nginx/sites-available/www.example.com.vhost
server {
# Listen on port 443 for both IPv4 and IPv6 and turn on http2 support.
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
ssl on;
# Paths to certificates assuming you're using let's encrypt / certbot
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
# There's much more directives you should fine tune for https, but that's another task.
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:6040;
proxy_read_timeout 90;
proxy_redirect http://localhost:6040 https://www.example.com;
}
}