Dominio y subdominios con nginx desde el mismo servidor

Dominio y subdominios con nginx desde el mismo servidor

Más desarrollo que operaciones aquí. Situación: Tengo un servidor doméstico (fedora) que ejecuta algunas aplicaciones usando podman. Algunos son servicios de bases de datos y utilizan varios puertos. ¿Puede esto funcionar en NGINX?

  • alojar un sitio personal a través de domain.dev. Sigue vivo localhost:8080.
  • albergar la cabina de Fedora a través de cocking.domain.dev. Sigue vivo localhost:9090.
  • Aloje las otras aplicaciones a través de subdominios propios, con sus distintos puertos db.domain.dev:30001que residen en localhost:30001. Creo que tengo 15 puertos utilizados en total.

Cabina que creo que puedo hacer (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;
  }
}

¿Puedo simplemente agregar otro location /para el dominio domain.dev?

Puedo abrir mi módem para pasar todos los puertos necesarios. Si es posible, tengo una pregunta de seguimiento más adelante sobre certbot, dominios de Google y DNS de Google. Ino puedohaz que eso funcione.

Respuesta1

Primero, tenga en cuenta que nginx es un proxy HTTP, por lo que solo puede enviar solicitudes a través del protocolo HTTP(S).

En segundo lugar, creo que necesitaré asignar un puerto diferente a su puerto de host local, una vez que el sistema operativo no permita que dos aplicaciones y procesos diferentes se vinculen al mismo puerto.

Se supone que la siguiente configuración funciona para usted (tenga en cuenta que estoy asignando el puerto 18080 a localhost:8080 y el puerto 19090 a 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;
    }
}

información relacionada