커리큘럼
home
React
home

Nginx (1)

문제 개요

1. 도메인별 요청 분리

여러 도메인(admin.dfgdwssegf.shop, cp.dfgdwssegf.shop,dfgdwssegf.shop)을 사용하여 각각의 도메인에 대해 요청을 적절한 백엔드 서버로 라우팅해야 했습니다.

2. 실시간 통신 문제

socket.io를 사용한 실시간 통신 기능이 각 도메인에서 제대로 동작하도록 설정해야 했습니다. 초기 설정에서는 실시간 통신이 원활하지 않는 문제가 발생했습니다.

문제 분석 및 목표

도메인별 요청 분리

각 도메인에서 들어오는 요청을 정확히 분리하여 올바른 백엔드 서버로 전달해야 합니다.

실시간 통신 문제 해결

socket.io를 사용한 실시간 통신이 안정적으로 동작하도록 설정하여, 클라이언트와 서버 간의 연결이 끊기지 않도록 해야 합니다.

Nginx 설정

다음은 도메인별 요청 분리와 실시간 통신 문제를 해결하기 위한 Nginx 설정입니다.
# admin.dfgdwssegf.shop 도메인에 대한 설정 server { listen 2000; server_name admin.dfgdwssegf.shop; location / { proxy_pass <http://admin.localhost:3000/>; proxy_set_header Host admin.localhost; 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; } } # dfgdwssegf.shop 도메인에 대한 설정 server { listen 2000; server_name dfgdwssegf.shop; location / { proxy_pass <http://localhost:3000/>; proxy_set_header Host localhost; 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; } # socket.io 실시간 통신 설정 location /socket.io/ { proxy_pass <http://localhost:3000/socket.io/>; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host localhost; 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 2000; server_name _; location / { proxy_pass <http://localhost:3000/>; proxy_set_header Host localhost; 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; } }
Plain Text
복사

해결된 문제

1. 도메인별 요청 분리

각 도메인에 대한 요청이 정확하게 설정된 백엔드 서버로 라우팅 되어, 관리 인터페이스와 일반 사용자 인터페이스가 독립적으로 운영될 수 있었습니다.

2. 실시간 통신 문제

초기에는 socket.io를 통한 실시간 통신이 제대로 동작하지 않았으나, Nginx의 proxy_http_version, Upgrade, Connection 헤더 설정을 통해 문제를 해결했습니다. 이를 통해 클라이언트와 서버 간의 실시간 연결이 원활하게 유지되었습니다.