Домен и поддомены с nginx с одного сервера

Домен и поддомены с nginx с одного сервера

Здесь больше 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;
    }
}

Связанный контент