Trouble Shooting Openvidu 서버 설정

Ena JJJ·2023년 2월 15일
1

TroubleShooting

목록 보기
1/2

Openvidu 라는 WebRTC 오픈 소스를 사용하려 했는데.. 제한사항이 무척이나 많았다. Nginx를 통해 역 프록시 설정 및 포트 설정 등등 이 있었다. 이 중에서 사이트의 SSL인증서를 발급 받는 부분에서 계속해서 인증이 되지 않던 오류가 있었다.

letsencrypt를 통해 받은 인증서들은 모두
/etc/letsencrypt/live에 있었는데.. 계속해서 찾을 수 없다는 오류가 반복 됐다.

Openvidu는 도커를 통해 실행해주는데, 따라서 docker-compose logs nginx를 통해서 로그를 출력하며 확인을 하는 작업을 수행했다.

결국 수많은 시도 끝에 위의 인증오류는 결국 포트 설정 때문이라는 것을 알게 되었다. openvidu 실행시 80,443 등의 포트를 도커 이미지 nginx를 통해서 사용한다. 하지만 내가 ubuntu내에서 reverse-proxy설정을 해줄 때, 80포트랑 443포트를 사용하게 하면서 이러한 오류가 계속해서 발생했던 것이다.

이 로그 찍는 법을 몰라서 너무 많은 고생을 했다. AWS ec2를 새로 생성하고, 전부 지웠다 만들기도 하고, 덕분에 로그를 더 열심히 봐야한다는 것을 심각하게 느낄 수 있었다.

해결방법

기존의 Openvidu의 http 서버는 80포트를 사용하고 https는 443서버를 이용한다 이를 http를 5442포트로 변경해주고 https는 5443으로 변경해준다. 이를 통해서 ubuntu 내의 nginx와의 충돌을 막아 주었다.

이번에 nginx를 열심히 가지고 놀면서 reverse-proxy, load-balancing 에 대해 자세히 알 수 있었고, nginx의 기능에 대해 알게 되었다. nginx..비동기 이벤트기반의 웹서버!! cpu만큼의 worker-process가 처리해준다!


AWS EC2를 통해 https 서버 배포 방식 (need... 도메인..필수 )

# 설치
sudo apt-get install nginx

# 설치 확인 및 버전 확인
nginx -v

nginx를 설치 후 letsencrypt를 다운 받는다

sudo apt-get install letsencrypt

sudo systemctl stop nginx

sudo letsencrypt certonly --standalone -d www제외한 도메인 이름

이후, Congratulations 로 시작하는 문구가 보이면 인증서 발급이 완료됐으며
/etc/nginx/live/도메인이름 으로 들어가면 key파일들이 있을 것이다.

이후 /etc/nginx/sites-available로 이동한 후, 적당한이름.conf 파일을 만들어 준다.

server {

        location /{
                proxy_pass http://localhost:3000;
        } # localhost 이 부분은 도커를 통해 실행하면 다른 url을 적어줄 수 있다는데..
        안해봐서 잘모르겠다 다음에 시도해 봐야겠다

        location /api {
                proxy_pass http://localhost:8080/api;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;
    
    
    # include /etc/letsencrypt/options-ssl-nginx.conf;
    # ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
}

server {
    if ($host = 도메인) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        server_name 도메인;
    return 404; # managed by Certbot
}

443포트로 오는 https 요청을 reverse-proxy를 통해서 http요청으로 처리한 후 반환해주며 https 인증 사이트 이용을 가능하게 설정해 준다.

sudo ln -s /etc/nginx/sites-available/[파일명] /etc/nginx/sites-enabled/

sudo nginx -t
# 파일들이 ok가 나면 된다

sudo systemctl restart nginx

위와 같은 방법을 통해 원하는 domain에 https 설정을 할 수 있다.

0개의 댓글