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 vivolocalhost:8080
. - hospedar o cockpit do Fedora através do
cocking.domain.dev
. Ele continua vivolocalhost:9090
. - hospedar os outros aplicativos através de subdomínios próprios, com suas diversas portas
db.domain.dev:30001
que residem nolocalhost: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;
}
}