- WebSocket은 양방향 통신을 위한 특별한 프로토콜이며, 주로 웹 애플리케이션에서 실시간 통신
- mod_proxy_wstunnel 모듈을 사용하면 Apache 서버가 WebSocket 연결을 프록시(중개)할 수 있음
<VirtualHost *:80>
ServerName example.com
ProxyPass "/ws" "ws://backend-server/"
ProxyPassReverse "/ws" "ws://backend-server/"
</VirtualHost>
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
# 사용한 모듈
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)
# 사용한 모듈
# 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]