[WAS] WebSocket 프로토콜

김봉남·2024년 1월 22일

WAS

목록 보기
5/23
post-thumbnail

WebSocket 프로토콜

  • WebSocket은 양방향 통신을 위한 특별한 프로토콜이며, 주로 웹 애플리케이션에서 실시간 통신
  • mod_proxy_wstunnel 모듈을 사용하면 Apache 서버가 WebSocket 연결을 프록시(중개)할 수 있음

Apache 설정 예시

<VirtualHost *:80>
    ServerName example.com

    ProxyPass "/ws" "ws://backend-server/"
    ProxyPassReverse "/ws" "ws://backend-server/"
</VirtualHost>
  • ws는 http 통신, wss는 https 통신

Websocket 모듈

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

Apache proxy 설정

# 사용한 모듈
LoadModule proxy_module /opt/jboss/httpd/modules/mod_proxy.so
LoadModule proxy_wstunnel_module /opt/jboss/httpd/modules/mod_proxy_wstunnel.so
 
# Proxy 설정
SSLengine on
SSLProxyEngine on
ProxyRequests Off
ProxyPreserveHost on
 
ProxyPass /ABC/WS wss://00.00.00.00/ABCD/WS           #웹 소켓 설정 ( https는 wss, http는 ws)
ProxyPassReverse /ABC/WS wss://00.00.00.00/ABCD/WS    #웹 소켓 설정 ( https는 wss, http는 ws)

Apache rewrite 설정

# 사용한 모듈
# reverse-proxy 동작을 위한 모듈
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_http_module lib/httpd/modules/mod_proxy_http.so
# websocket 동작을 위해
LoadModule proxy_wstunnel_module lib/httpd/modules/mod_proxy_wstunnel.so
# 일부 헤더를 기반으로 websocket 동작 필터링을 위해 필요
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
 
# Proxy 설정
SSLengine on
SSLProxyEngine on
ProxyRequests Off
ProxyPreserveHost on
 
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/testABC "ws://127.0.0.1:3000/testABC" [P,L]
profile
남자다

0개의 댓글