아파치 2, SSL, Socket.io 설정하기

Soda Flavour·2020년 9월 21일
0
post-custom-banner

intro

아파치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 로 연결여부를 확인해본다.

profile
소다맛의 기술 블로그입니다.
post-custom-banner

0개의 댓글