[어플리케이션 고정 IP 발급, 네임서버 도메인 매칭]
1) instance management page > Elastic IPs 발급
2) 발급받은 고정 IP 선택 > Actions > Associate address > 인스턴스와 연결
3) 네임서버 설정 : 구매한 도메인이 고정 IP(어플리케이션 컴퓨터, 서비스)를 가리키게 만들기
=> AWS Route53 : AWS DNS 서비스 - https://console.aws.amazon.com/route53/home?region=us-east-1#DomainListing:
=> AWS에서 도메인을 구매해서 바로 Route53 사용해도되고, 외부 업체에서 도메인 구매하고 외부 업체 네임서버를 사용하면됨
=> 닷홈에서 도메인을 사고, 도메인 네임 서버를 AWS 네임서버로 변경하기
4) Route53 > DNS management > create Hosted zones > 도메인 네임 입력 후 create
=> Type NS 4개 : 네임서버 주소, 콘솔에서 ping 네임서버주소 를 입력하면 네임서버의 IP 주소를 리턴받을 수 있음
=> 닷홈 네임서버 관리자로 가서 네임서버 주소 + IP 입력
6) 이제부터 AWS Route53에서 관리
[도메인 연결 + nginx + express]
1) Nginx 설치 : 프록시 서버, 클라이언트가 직접적으로 WAS(express)에 접근하지않고 프록시 서버에 요청 -> WAS에 request
=> Apache가 쓰레드 기반으로 처리를 한다면, Nginx는 비동기 이벤트 방식으로 요청을 처리
=> 프록시 서버란? 클라이언트가 자신(nginx)을 통해서 다른 네트워크 서비스(express)에 간접적으로 접속할 수 있게 해주는 컴퓨터 or 응용프로그램
서버(WAS를 뜻함)와 클라이언트 사이에 중계기로서 통신을 수행하는 기능을 가리켜 프록시, 중계 기능 하는 것을 프록시 서버라 함
캐시를 이용하여 프록시 서버에 요청된 내용을 저장 : 캐시 안에 있는 정보 요구하는 요청에 대해 원격 서버에 요청하지않고 그대로 전송해줌
=> RHEL / Centos의 경우 repo를 추가해줘야함 : /etc/yum.repos.d/nginx.repo
=> 설치 후 서비스 시작하기 : systemctl start nginx / systemctl enable nginx
=> nginx 설정 파일 : /etc/nginx/conf.d/default.conf (디렉토리 /etc/nginx)
=> 사용자 디렉토리 : /usr/share/nginx/html
=> 로그 디렉토리 : /var/log/nginx
=> 설치 확인
2) aws 인스턴스 80 포트 열어주기 : Security Groups > 인스턴스 그룹 선택 > Inbound > 80 포트 추가
3) Route53 > Hosted Zone(이전 스텝에서 등록한 네임서버 목록 있는 호스트존) > Create Record Set > A
=> A 레코드 : IP와 도메인 연결해줌
4) Route53 > Hosted Zone(이전 스텝에서 등록한 네임서버 목록 있는 호스트존) > Create Record Set > CName
=> 앞서 생성한 A 레코드로 IP와 도메인주소(politics-watch.com)은 연결됨
=> www.politics-watch 로 연결되게하기위해 서브도메인 설정을 해줌
=> CName : 도메인주소와 서브도메인주소 간 연결, www.politics-watch.com으로 연결하면 politics-watch로 연결됨
5) express 프록시 설정(nginx) : /etc/nginx/conf.d/default.conf
- 아래 코드 추가
1 2 3 4 5 6 7 8 9 10 11 | server { location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:3000/; proxy_redirect off; } } | cs |
=> 에러가 발생하면 로그부터 확인(/var/log/nginx) : (13: permission denied)이 뜨면 아래와 같이 해결
=> SELinux 문제라함 : 구글링
=> SELinux 로그 확인 : cat /var/log/audit/audit.log | grep nginx | grep denied
(1) setsebool -P httpd_can_network_connect 1
(2) service nginx restart
6) 테스트를 위해 열어두었던 3000번 포트 닫기 : 외부로부터 3000번 접근 막기
=> 유저가 www.politics-watch.com 으로 접속 > nginx(80포트) - request - express server(3000번 포트)
=> pm2로 계속해서 돌아가도록 설정할 것 : 다음 포스팅 참조(지금은 접속됨~~~)
=> pm2로 계속해서 돌아가도록 설정할 것 : 다음 포스팅 참조(지금은 접속됨~~~)
=> 내부적으로만 연결
7) 연결해보기
'nodejs' 카테고리의 다른 글
[node.js] 프로젝트 - 테스트 시간 기다리면서 여태 추가한 내역 (0) | 2017.08.03 |
---|---|
[node.js] 프로젝트 - pm2 : 노드 어플리케이션 프로세스 유지 (0) | 2017.08.01 |
[node.js] 핫키워드 서비스 관련 모듈 - 타이머 (0) | 2017.07.29 |
[node.js] 프로젝트에서 실제 동작할 때 쓰일 크롤러 (0) | 2017.07.19 |
[node.js] 프로젝트 개발 - 크롤링, 형태소 분석, mysql서버 insert (0) | 2017.07.11 |
댓글