2 Hours NginX Crash Course + Bonus Content (꼭 학습할것)
- 라운드로빈 방식

- 라운드로빈 방식과 Sticky 세션 설정 (ip_hash)


- Sticky 세션 적용완료 (새로고침 해도 변경없음)

## Proxy_pass 로 upstream 서비스 분기 설정 (적용 예정)
## Layer7 기능으로 설정

## Layer7 프록시이기 때문에 Context Path 로 분기 가능

- location /app1 추가
- proxy_pass http://app1backend/; 추가
- location /app2 추가
- proxy_pass http://app2backend/; 추가


- / 로 접속하면 라운드로빈 방식으로 순차적 접속 (서버 4대)

- /app1 로 접속하면 라운드로빈 방식으로 순차적 접속 (서버 2222, 3333 만 접속)

- /app2 로 접속하면 라운드로빈 방식으로 순차적 접속 (서버 4444, 5555 만 접속)

- admin 사이트를 외부에서 접속 불가하게 설정 (현재는 가능)


- 관리자 API를 공용인터넷에 노출하고 싶지 않을때.

- nginx.conf 파일 수정 (/admin 접속시 403 을 반환함)
: location /admin {
return 403;
}


- 여전히 내부망인 localhost:2222/admin 는 접속 가능

- localhost/admin 으로 접속 불가 (80포트는 /admin 페이지 차단함)

## 여기서부터는 Layer4 기능을 실습 (적용 필요) --> 보류할 것

- Layer4는 /app1 과 /app2 를 수행할 수 없어서 삭제함.

- Layer4 는 프록시팩스를 활용하여 백엔드에서 TCP 연결을 설정하고 IP를 매핑합니다.

- Layer4 기능은 http --> stream 으로 변경
- Layer4 에서는 location / 를 사용할 수 없다.

- 백엔드에서 HTTP를 언급할 수 없다.

- nginx -s reload 시 에러발생

- 라운드로빈이 적용 안됨


- 무작위로 선정이 됨

- Telnet 으로 접속 테스트
- telnet 127.0.0.1 80
: GET / 입력
- 5555 서비스에 접속

- 다시 접속할때마다 변경됨 (5555 --> 2222 --> 3333)

## 내 구성을 HTTP 계층 7구성으로 되돌린다. (이걸로 적용 필요)
- cp nginx.conf tcp.conf 백업


- cp http.conf nginx.conf 재원복


- Layer7 으로 라운드로빈 잘 작동됨

- 두 개의 규칙 포트 80 및 포트 443 을 추가

- 내 Public IP주소를 가리켜 도메인 생성

- 공개 주소로 대중에게 호스팅

- 도메인 및 HTTPS 활성화하고 인증서 및 TLS 1.3 을 활성화

## 구성 작업
1) 내 웹사이트의 공인IP 확인 (접속시 실패)

- 라우터 설정 필요




- 80, 443 포트 연동 설정

- 외부에서 퍼블릭IP 접속 성공

- 라운드로빈 잘됨

2) 공인 IP에 적용할 도메인 생성
- 공개 IP주소를 가리키는 무료서비스 (https://www.noip.com/)
- Create Hostname 클릭

- nginxtest.ddns.net 도메인 생성


- nginxtest.ddns.net 도메인 접속 성공



3) HTTPS 를 위해 인증서 구성
- letsencrypt 설치


- nginx -s stop


- nginx 에게 공개키를 알려줌
- 개인키도 서버가 본질적으로 트래픽을 해독하는 데 사용할 것임.
- 서버에서 독립형 인증서 생성
- sudo certbot certonly --standalone

- 암호 입력
- nginxtest.ddns.net 도메인 입력

- 공개 키와 인증서가 있는 전체 체인이 있고, (fullchain.pem)
- 개인키가 있음 (privkey.pem)

- 해당 서버의 vi nginx.conf 수정

- 기본값은 443이고 TLS를 활성화하기 원하므로 SSL을 추가함
listen 443 ssl;
ssl_certificate 에 해당 공개 키 전체를 복사 후, 저장

- 개인키 경로 복사

- ssl_certificate_key 경로 복사
- 이제 이 항목을 저장하면 공개키가 있고, 개인키가 있음

- nginx -s reload 시 권한 오류 발생

- sudo nginx 로 실행


- https://nginxtest.ddns.net 접속 성공



- TLS1.3 확인 방법 (https://www.cdn77.com/tls-test)



4) Nginx에 TLS 1.3 설정하기
- vi nginx.conf
ssl_protocols TLSv1.3; 추가

- 인증서 설치후 nginx reload 시 sudo 권한 필요
: sudo nginx -s reload



5) HTTP2 프로토콜 설정
- vi nginx.conf 수정

- listen 443 ssl http2; 추가


- http2 프로토콜 적용 성공

## 요약
- Nginx 는 매우 강력한 Layer7 기능을 지원
- Nginx 도 유료버전이 있음
- 기본인 TLS 1.2 및 HTTP 1.0 은 암호가 매우 약해서, 추가 설정이 필요함

## Client_header_timeout


## Client_body_timeout

## send_timeout

## Keepalive_timeout

## lingering_timeout

## 참고할 것

## proxy_connect_timeout








https://www.youtube.com/watch?v=hcw-NjOh8r0&t=0s
'NGINX' 카테고리의 다른 글
[학습] NGINX 상세구조 분석 (0) | 2021.05.21 |
---|---|
Nginx LoadBalancer - Ubuntu 20.04 (0) | 2021.05.21 |
[최종] Nginx Load Balancer (Nginx 로드밸런서) - (분기방법/꼭 학습할것!!!) (0) | 2021.05.20 |
NGINX + HTTPS 적용하기 (0) | 2021.04.27 |
Nginx 이해하기 (0) | 2021.04.23 |
댓글