Здесь больше dev, чем ops. Ситуация: у меня есть домашний сервер (fedora), на котором запущено несколько приложений с использованием podman. Некоторые из них — службы баз данных и используют различные порты. Может ли это работать в NGINX?
- разместить персональный сайт через
domain.dev
. Он живет наlocalhost:8080
. - разместить кабину Fedora через
cocking.domain.dev
. Она живетlocalhost:9090
. - размещать другие приложения через свои собственные поддомены с их различными портами,
db.domain.dev:30001
которые находятся наlocalhost:30001
. Я думаю, что у меня всего используется 15 портов.
Я думаю, что смогу сделать Cockpit (он использует веб-сокеты)
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;
}
}
Могу ли я просто добавить еще один location /
домен domain.dev
?
Я могу открыть свой модем, чтобы передать все требуемые порты. Если возможно, у меня есть дополнительный вопрос позже о certbot, доменах Google и DNS Google. Яне могузаставить это работать.
решение1
Во-первых, помните, что nginx — это HTTP-прокси, поэтому вы можете проксировать запросы только по протоколу HTTP(S).
Во-вторых, я думаю, мне нужно будет сопоставить другой порт с портом вашего локального хоста, так как ОС не позволит двум разным приложениям и процессам привязываться к одному и тому же порту.
Приведенная ниже конфигурация должна вам подойти (обратите внимание, что я сопоставляю порт 18080 с localhost:8080, а порт 19090 с 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;
}
}