동일한 서버의 nginx가 있는 도메인 및 하위 도메인

동일한 서버의 nginx가 있는 도메인 및 하위 도메인

여기에는 운영팀보다 개발팀이 더 많습니다. 상황: Podman을 사용하여 몇 가지 애플리케이션을 실행하는 홈 서버(fedora)가 있습니다. 일부는 데이터베이스 서비스이며 다양한 포트를 사용합니다. NGINX에서 작동할 수 있나요?

  • 를 통해 개인 사이트를 호스팅하세요 domain.dev. 그것은 에 살고 있습니다 localhost:8080.
  • 를 통해 Fedora 조종석을 호스팅합니다 cocking.domain.dev. 그것은 에 살고 있습니다 localhost:9090.
  • db.domain.dev:30001에 있는 다양한 포트를 사용하여 자체 하위 도메인을 통해 다른 애플리케이션을 호스팅합니다 localhost:30001. 총 15개의 포트를 사용한 것 같습니다.

조종석은 할 수 있을 것 같아요 (웹소켓을 사용합니다)

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 도메인 및 google dns에 대한 후속 질문이 있습니다. 나할 수 없다작동하도록 하세요.

답변1

먼저, nginx는 HTTP 프록시이므로 HTTP(S) 프로토콜을 통해서만 요청을 프록시할 수 있다는 점을 명심하세요.

둘째, OS가 두 개의 서로 다른 응용 프로그램과 프로세스를 동일한 포트에 바인딩하는 것을 허용하지 않으면 다른 포트를 로컬 호스트 포트에 매핑해야 한다고 생각합니다.

아래 구성은 여러분에게 적합할 것으로 예상됩니다(포트 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;
    }
}

관련 정보