-
[Tnote] npm를 통해서 https로 변경하기T-note 2024. 3. 11. 19:12728x90
Http를 Https로 변경하는 방법은 무료 / 유료로 나눠지기도 하며 정말 다양한 방법이 있는거 같다.
aws를 통해서 ssl 인증서를 받거나, sslforfree 사이트에서 무료 인증서를 받아서 진행할 수 있다
나는 Nginx를 통해서 간편하게 진행해보았다.
Nginx Proxy Manager (NPM)은 오프 소스 웹 인터페이스를 사용하여 Nginx reverse proxy를 관리하기 위한 툴인데, docker를 사용하여 배포 및 설치할 수 있어서 되게 간편하다
내가 NPM을 사용하게 된 이유는
1. SSL 인증서 관리 : 무료이면서 Let's Encrypt 인증서를 자동 갱신청하여 HTTPS 보안 연결을 쉽게 할 수 있기 때문이다.
2. 웹 기반 UI : 처음하는 입장에서 NginxProxyManager는 웹 기반 UI를 제공하니, 쉽게 설정을 변경하고 관리할 수 있기 때문이다
3. Reverse Proxy : NginxProxyManager는 reverse proxy 기능을 제공해서 여러 개의 웹 사이트를 한개의 ip 주소로 관리하기에 간편하기 때문이다.
Nginx Proxy Manager
Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt
nginxproxymanager.com
npm에서는 공식으로 지원하는 설치 방법은 docker-compose를 이용하도록 권장하며, 나도 이를 통해서 진행했다
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: # These ports are in format <host-port>:<container-port> - '80:80' # Public HTTP Port - '443:443' # Public HTTPS Port - '81:81' # Admin Web Port # Add any other Stream port you want to expose # - '21:21' # FTP environment: # Mysql/Maria connection parameters: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db db: image: 'jc21/mariadb-aria:latest' restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' MARIADB_AUTO_UPGRADE: '1' volumes: - ./mysql:/var/lib/mysql
이렇게 NPM에서 제공하는 코드를 가져다 쓰면 된다. ( 참고로 ec2 내부에 해당 파일을 만들어 줘야 한다 )
ec2 내부에 파일을 만드는 방법은 "touch" 명령어를 사용하면 된다
touch docker-compose.yml
만들어 주고 아래와 같은 명령어를 실행해 주면 된다
docker-compose up - d
결과 하지만 기본적으로 8080으로 진행하기 때문에 만날 수 있는 포트 에러가 있다
[ Bind for 0.0.0.0:80 failed : port is already allocated ]
( 이 블로그를 참고해보기 : https://techj9972.tistory.com/286 )
그 다음은 public IPv4 주소를 통해서 접근을 해볼것이다 [ IPv4:80 -> 브라우저에서 이렇게 접근하면 됩니다 ]
뜰 화면 만약에 접근이 되지 않는다면 인바운드 규칙을 추가하지 않아서 그렇습니다
[ 추가하는 방법 : ec2 인스턴스 인바운드 규칙에서 아래와 같이 추가해주시면 됩니다 ]
인바운드 초기 ID : admin@example.com
초기 비번 : changeme
ID/PWD 는 개인적으로 수정해주시고, 메인 화면을 보면 4가지가 있어요
"Proxy Host, Redirection Host, Streams, 404 Hosts" 이렇게 있는데, 저희는 Proxy Host 만 추가해줄게요
추가하는 방법
1. Dash board 누르기
2. Add proxy Host ( 오른쪽 위쪽 ) 누르기
3. 도메인 작성해주고 ( 저같은 경우는 j9972.kr ), Forward Hostname에는 퍼블릭 IPV4 , Forward Port는 8080 작성하기
4. SSL 파트에서 ssl certificate 선택하고 아래와 같이 3가지를 켜주시면 됩니다이러면 종료입니다!!
결과 이렇게 적용된 모습을 볼 수 있습니다.
'T-note' 카테고리의 다른 글
[Error] 502 Bad Gateway (0) 2024.03.14 [error] bind for 0.0.0.0:80 failed: port is already allocate (0) 2024.03.11 [tnote] swap 메모리 설정 (0) 2024.03.11 [Error] 수정한 코드가 운영서버에 적용이 안됩니다! (0) 2024.03.07 [tnote] 포트넘버 트러블 이슈 (0) 2024.02.22