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 vivolocalhost:8080
. - albergar la cabina de Fedora a través de
cocking.domain.dev
. Sigue vivolocalhost:9090
. - Aloje las otras aplicaciones a través de subdominios propios, con sus distintos puertos
db.domain.dev:30001
que residen enlocalhost: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;
}
}