아파치2에서 ssl 적용상태에서 socket.io를 적용하는 방법이다.
<VirtualHost *:80>
ServerName "############"
ServerAdmin webmaster@localhost
DocumentRoot "############"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName "############"
ServerAlias "############"
ServerAdmin contact@example.com
DocumentRoot "############"
ProxyRequests Off
SSLProxyEngine on
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy *>
Order deny,allow
Allow from all
</proxy>
SSLEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLCertificateFile "############"
SSLCertificateKeyFile "############"
SSLCertificateChainFile "############"
ProxyPass / http://127.0.0.1:3000/ nocanon
ProxyPassReverse / http://127.0.0.1:3000/
Alias /수정 /var/www/html/수정
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
ProxyPass /socket.io http://localhost:3000/socket.io
ProxyPassReverse /socket.io http://localhost:3000/socket.io
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
"############" 부분을 수정해서 사용하면 된다.
nodeJS가 동작하는 내부포트 3000으로 프록시를 해준다.
URL에 socket.io, 쿼리 스트링에 transport=websocket을 달고 오는 요청을 3000번으로 연결해준다.
1. socket.io.js 경로 파일이 접속되는지 확인한다.
2. 프론트 js의 소켓 연결단에서 try catch 로 연결여부를 확인해본다.