반응형
SMALL
반응형
SMALL
이번에 WebSocket, STOMP, SockJS를 사용하면서 Nginx conf 파일이 변경이 되었습니다.
아직 구현은 하지 않았지만 미리 Server Side Event(SSE) 설정도 같이 넣어줬습니다.
기본 nginx의 설정은
Nuwa Project (1) - Project Setting
이번에 새롭게 협업 프로젝트를 진행을 하기로 했습니다. 처음엔 이것 저것 어떤 프로젝트를 진행을 할까 고민을 하다 협업툴을 만들어보기로 결정을 했습니다. 협업툴이면 이것 저것 다양한
classruntime.tistory.com
이 쪽을 참고하시면 됩니다.
WebSocket 또는 SSE(Server Side Event)는기본적으로 http version을 1.1을 사용하기 때문에 변경을 해주었습니다.
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 1024;
}
http {
include mime.types;
client_max_body_size 50M;
# WebSocket 연결을 위한 설정
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl;
server_name your_server_name;
ssl_certificate /etc/letsencrypt/live/your_server_name/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_server_name/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# 일반 HTTPS 요청 처리
location / {
proxy_pass http://127.0.0.1:8081;
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;
# WebSocket 및 SSE 설정을 제외한 일반 설정
}
# WebSocket 연결을 위한 별도의 엔드포인트 설정
location /socket {
proxy_pass http://127.0.0.1:8081/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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-Sent Events (SSE)를 위한 별도의 엔드포인트 설정
location /event {
proxy_pass http://127.0.0.1:8081/event;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_cache off;
proxy_set_header Cache-Control "no-cache";
proxy_set_header X-Accel-Buffering "no";
send_timeout 1d; # 연결 타임아웃을 길게 설정
}
}
server {
listen 80;
server_name your_server_name;
# 모든 HTTP 요청을 HTTPS로 리디렉션
return 301 https://$host$request_uri;
}
}
HTTPS 서버 설정
server 블록은 443 포트에서의 SSL/TLS를 통한 HTTPS 요청을 처리합니다.
location / 블록에서는 일반 HTTPS 요청을 처리합니다. 요청은 http://127.0.0.1:8081로 프록시됩니다.
WebSocket 연결 처리
location /socket 블록은 /socket 경로로 들어오는 WebSocket 연결을 처리합니다.
WebSocket 연결에 필요한 Upgrade와 Connection 헤더를 설정하여,
HTTP 연결을 WebSocket 프로토콜로 업그레이드합니다.
Server-Sent Events(SSE) 처리
location /event 블록은 SSE를 위해 설정됩니다.
proxy_buffering off;과 같은 설정을 통해 SSE 요청에 최적화된 설정을 제공합니다.
버퍼링을 비활성화하고, 연결 타임아웃을 길게 설정하여 지속적인 데이터 스트림을 지원합니다.
HTTP 요청 HTTPS 리디렉션
두 번째 server 블록은 80 포트(HTTP)로 들어오는 모든 요청을 443 포트(HTTPS)로 리디렉션합니다. 이는 return 301 https://$host$request_uri; 구문을 통해 수행됩니다.
$http_upgrade
이 변수는 클라이언트 요청 헤더 중 Upgrade 헤더의 값을 포함합니다.
WebSocket 연결 시, 클라이언트는 Upgrade: websocket 헤더를 보내 서버에게 프로토콜을 WebSocket으로 전환할 것을 요청합니다.
$http_upgrade는 이 Upgrade 헤더의 값을 참조하여, WebSocket 연결 요청을 감지하는 데 사용됩니다.
$connection_upgrade
map $http_upgrade $connection_upgrade 지시어를 통해 정의된 변수입니다.
이 구문은 $http_upgrade 변수의 값에 따라 $connection_upgrade 변수에 upgrade 또는 close 값을 할당합니다. WebSocket 연결의 경우, Upgrade 헤더가 존재하면 $connection_upgrade는 upgrade로 설정되어,
연결을 WebSocket 프로토콜로 업그레이드합니다.
$host
현재 요청의 호스트 헤더 필드의 값이나 서버 이름을 포함하는 변수입니다.
클라이언트가 요청한 호스트 주소를 나타냅니다.
이 변수는 프록시 요청 시 원래 요청된 호스트 정보를 백엔드 서버로 전달하는 데 사용됩니다.
$remote_addr
클라이언트의 IP 주소를 포함하는 변수입니다.
Nginx가 클라이언트로부터 직접 받은 연결의 IP 주소를 나타냅니다.
이는 클라이언트의 실제 IP 주소를 로깅하거나 백엔드 애플리케이션에 전달하는 데 사용됩니다.
$proxy_add_x_forwarded_for
X-Forwarded-For 헤더에 추가할 클라이언트의 IP 주소를 포함하는 변수입니다.
이 변수는 $remote_addr와 함께 사용되어, Nginx를 거쳐 오는 요청의 원본 IP 주소를 X-Forwarded-For 헤더에 추가합니다. 이 헤더는 프록시 서버나 로드 밸런서를 거쳐온 요청의 원본 클라이언트 IP 주소를 추적하는 데 사용됩니다.
$scheme
현재 요청에서 사용된 프로토콜(http 또는 https)을 포함하는 변수입니다.
이 변수는 원래 요청의 스키마를 백엔드 서버로 전달하거나, 특정 조건에 따른 처리를 구분하는 데 사용됩니다.
반응형
LIST
'Project > Nuwa' 카테고리의 다른 글
Nuwa Project - AWS S3 (Issue) (1) | 2024.02.16 |
---|---|
Nuwa Project - JPA 상속 관계 맵핑 (0) | 2024.02.09 |
Nuwa Project - Failed to validate connection (0) | 2024.02.07 |
Nuwa Project - Custom Annotation (0) | 2024.02.06 |
Nuwa Project - 회원 가입, 로그인, 소셜 로그인 (0) | 2024.02.01 |