메뉴 건너뛰기

조회 수 2031 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

웹소켓서버를 구현할때 https 서비스중인 아파치서버와는 별도의 특정 포트로 서비스하는데

문제는 휴대폰 WIFI 네트워크에서는 문제없이 접속되나 통신사 모바일네트워크로 접속하면

http 나 https 포트가 아니면 접속이 불가능하다.

이 경우 웹소켓서버가 https 웹서버역할까지 같이하게 하면 되는데

이럴려면 아파치서버를 버려야 한다.

 

기존 아파치서버를 안건드리려면 기존 https 요청에서 특정 경로의 요청만 웹소켓서버의 포트로 bypass 시켜주면

모바일네트워크 NAT에서는 그냥 https 접속으로 인식되어서 웹소켓 접속이 가능해진다.

 

아파치 2.4.47 버전부터는 mod_proxy_http 에서 웹소켓 프로토콜 업그레이드도 자체 지원하므로 pass 설정이 간단하다.

그 이전버전은 mod_proxy_wstunnel로 설정했어야했다.

 

1. 윈도우면 아파치 설정에서 

LoadModule proxy_module modules/mod_proxy.so
# 와
LoadModule proxy_http_module modules/mod_proxy_http.so

 

주석을 풀어주고

 

우분투면

a2enmod proxy
a2enmod proxy_http

 

명령으로 proxy 와 proxy_http의 모듈을 활성화 시켜준다.

 

2. wss://mydomain.com:8000 주소로 웹소켓 서버를 운영중이고 https://mydomain.com/chat/ 를 프락시 주소로 쓰고싶다면

 

/chat/ 의 요청을 모두 https://mydomain.com:8000 포트로 bypass 시켜주면 되는 데 웹소켓이므로

http프로토콜을 websocket 프로토콜로 업그레이드하는 과정도 bypass 시켜줘야 한다.

이때 wss로 서비스하려면 https=>http가 아닌 https=>https 로 proxypass 시켜야한다.

아파치 해당 도메인의 ssl.conf 파일을 열어

<VirtualHost *:443>
#....
#....
SSLProxyEngine On
ProxyRequests Off
ProxyPass "/chat/" "https://mydomain.com:8000/" upgrade=websocket

 

3줄을 추가해주고 서버 재시작하면 된다.

 

프락시로 연결된 웹소켓이 1~2분내에 연결이 끊어진다면 서버에서 각 클라이언트로 ping날리는 간격을 줄여줘 idle 시간을 줄여야한다.

아파치 mod_proxy 설정 건드리고 몇 시간을 삽질했는데 idle timeout 을 설정에서 늘릴수 있는 방법이 없는 것같다.

개인적으로 자꾸 연결이 끊어져서 핑퐁을 30초로 줄여줬더니 더이상 안끊어졌다.

 

장시간 연결되는 웹소켓 연결을 모두 아파치 프락시로 연결하면 아파치서버에 부담이 되니

클라이언트브라우저에서 navigator.connection.type이 cellular인지 체크해서 cellular일때만 프락시주소로 접근시키고

나머지는 웹소켓 원래주소로 연결시켜주는 방법을 쓰는 게 좋을것 같다.

아이폰은 와이파이연결이 아니면 프락시로도 연결이 안되는것 같다.

 

 

 

 

 


  1. No Image 20Jul
    by DDART
    2024/07/20 by DDART
    Views 208 

    장치관리자에서 삭제한 장치 자동 재설치 방지하는 방법

  2. No Image 09Nov
    by DDART
    2023/11/09 by DDART
    Views 1709 

    윈도우10 아이콘이 제대로 표시 안될때

  3. No Image 22Dec
    by DDART
    2019/12/22 by DDART
    Views 1792 

    우분투 19.04, 19.10, 20.04 으로 업그레이드 하기

  4. No Image 27May
    by DDART
    2023/05/27 by DDART
    Views 1819 

    윈도우용 아파치 php 버전 동시에 2개이상 띄우기

  5. No Image 21Jan
    by DDART
    2024/01/21 by DDART
    Views 1993 

    윈도우에서 우분투 22.04 MariaDB 서버 SSL접속시 SEC_E_ALGORITHM_MISMATCH 오류

  6. No Image 19Jul
    by DDART
    2023/07/19 by DDART
    Views 2031 

    아파치서버에서 웹소켓 특정포트 프락시설정방법

  7. No Image 07May
    by DDART
    2023/05/07 by DDART
    Views 2068 

    윈도우에서 우분투 20.04 MariaDB 서버 SSL접속시 SEC_E_ALGORITHM_MISMATCH 오류

  8. No Image 15Oct
    by DDART
    2018/10/15 by DDART
    Views 2093 

    우분투 16.04 에서 18.04 로 업그레이드하기

  9. 윈도우용 아파치에서 localhost 를 https로 띄우기

  10. No Image 12Dec
    by DDART
    2017/12/12 by DDART
    Views 2273 

    vsftpd 설정

  11. No Image 03Jul
    by DDART
    2021/07/03 by DDART
    Views 2372 

    우분투 서버 자동업데이트

  12. No Image 03May
    by DDART
    2023/05/03 by DDART
    Views 2374 

    mysql/mariadb 손상된 inno db 복구

  13. No Image 09Sep
    by DDART
    2019/09/09 by DDART
    Views 2459 

    윈도우 10에서 구글 어시스턴트 명령

  14. No Image 17Sep
    by DDART
    2020/09/17 by DDART
    Views 2534 

    윈도우 10 마이크로소프트 계정 PIN 없이 자동로그인

  15. No Image 11Jul
    by DDART
    2020/07/11 by DDART
    Views 2766 

    터미널에서 backspace 키가 안눌러질때

  16. No Image 13Jun
    by DDART
    2023/06/13 by DDART
    Views 2783 

    우분투 22.04 메일서버 설정

  17. No Image 07Jul
    by DDART
    2020/07/07 by DDART
    Views 2789 

    서버사이 동기화하기 - rsync, mariadb replication

  18. No Image 23Jul
    by DDART
    2021/07/23 by DDART
    Views 2792 

    우분투 서버 업데이트 후 자동 전원 대기모드 방지

  19. No Image 12Jun
    by DDART
    2019/06/12 by DDART
    Views 2815 

    해외 IP차단

  20. No Image 05May
    by DDART
    2023/05/05 by DDART
    Views 2921 

    원격데스크톱 연결후 화면 사라짐현상, 특정 IP만 접속 허용

Board Pagination Prev 1 2 3 ... 4 Next
/ 4