Domínio e subdomínios com nginx do mesmo servidor

Domínio e subdomínios com nginx do mesmo servidor

Mais desenvolvedores do que operações aqui. Situação: Tenho um servidor doméstico (fedora) executando alguns aplicativos usando podman. Alguns são serviços de banco de dados e usam várias portas. Isso pode funcionar no NGINX?

  • hospedar site pessoal por meio de domain.dev. Ele continua vivo localhost:8080.
  • hospedar o cockpit do Fedora através do cocking.domain.dev. Ele continua vivo localhost:9090.
  • hospedar os outros aplicativos através de subdomínios próprios, com suas diversas portas db.domain.dev:30001que residem no localhost:30001. Acho que tenho 15 portas usadas no total.

Cockpit eu acho que posso fazer (usa websockets)

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}
upstream websocket {
  server localhost:9090;
}
server {
  server_name cockpit.domain.dev;
  location / {
    proxy_pass http://websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Origin https://$host;
  }
}

Posso simplesmente adicionar outro location /para domínio domain.dev?

Posso abrir meu modem para passar todas as portas necessárias. Se possível, tenho uma pergunta posterior sobre certbot, domínios do Google e DNS do Google. EUnão podefaça isso funcionar.

Responder1

Primeiro, lembre-se de que o nginx é um proxy HTTP, portanto, você só pode fazer proxy de solicitações pelo protocolo HTTP(S).

Em segundo lugar, acho que precisarei mapear uma porta diferente para a porta do host local, uma vez que o sistema operacional não permitirá que dois aplicativos e processos diferentes vinculem a mesma porta.

A configuração abaixo deve funcionar para você (observe que estou mapeando a porta 18080 para localhost:8080 e a porta 19090 para localhost:9090):

server {
    listen 18080;

    server_name domain.dev;

    access_log /var/log/nginx/domain.dev-access.log;
    error_log /var/log/nginx/domain.dev-error.log error;
    
    location / {
      proxy_pass http://localhost:8080;
      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;
    }
}

server {
    listen 19090;

    server_name cockpit.domain.dev;

    access_log /var/log/nginx/cockpit.domain.dev-access.log;
    error_log /var/log/nginx/cockpit.domain.dev-error.log error;
    
    location / {
      proxy_pass http://localhost:9090;
      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;
    }
}

informação relacionada