✔ upstream - 백엔드 서버 그룹을 정의하는 지시어
upstream ssl_service {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
server 127.0.0.1:8004;
}
ssl_service라는 이름으로 그룹을 정의하고, 8000부터 8004까지의 포트를 가진 서버를 지정
✔ Port와 서버 이름
server {
listen 443 ssl;
server_name tistoryt.co.kr;
#server_name 127.1.2.3;
#ssl on;
tistoryt.co.kr 도메인에서 들어오는 HTTPS(포트 443) 요청을 처리하는 부분이며, 나중에 예를 들어 localhost:9999 였던 주소가 server_name tistoryt.co.kr 이렇게 변화하는 부분이다.
✔ SSL 인증서와 키 파일 경로
ssl_certificate /home/tistory/nginx/certs/T.tistory.co.kr.pem;
ssl_certificate_key /home/tistory/nginx/certs/T.tistory.co.kr.key;
SSL 암호화를 위한 인증서와 개인 키 파일의 경로를 설정한다. ssl_certificate는 공개 인증서 파일의 경로를 지정하고, ssl_certificate_key는 해당 인증서의 개인 키 파일의 경로를 지정한다.
SSL 인증서와 개인 키 파일은 HTTPS(암호화된 HTTP) 연결을 설정하기 위해 사용된다. 이들 파일은 서버의 신원을 확인하고 통신을 암호화하는 데 필요한 보안 요소
✔ SSL/TLS
# 지원할 SSL/TLS 프로토콜 버전을 설정합니다.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 사용할 암호화 알고리즘을 지정합니다.
ssl_ciphers 'EECDH+AESGCM:AAA+AAAAMA:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
SSL 프로토콜 및 암호화 알고리즘: ssl_protocols에서는 지원할 SSL/TLS 프로토콜 버전을 설정하고, ssl_ciphers에서는 사용할 암호화 알고리즘을 지정
✔ 경로설정
# 서버의 루트 디렉토리와 인덱스 파일을 설정합니다.
root /home/Terashot/nginx/tistory_service/wwwroot;
index index.php index.html index.htm;
# 에러 로그 파일의 경로를 설정합니다.
error_log /home/Tistory/nginx/tistory_service/logs/error.log;
서버의 루트 디렉토리와 인덱스 파일을 설정하는 것은 웹 서버가 요청을 적절히 처리하고 원하는 파일을 제공
✔리버스 프록시 설정
# /api/v1/image 경로로 들어오는 요청을 리버스 프록시로 처리하는 location 블록입니다.
location /api/v1/image {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
proxy_set_header X-NginX-Proxy true;
# 해당 요청을 백엔드 서버 그룹인 tistory_service로 전달합니다.
proxy_pass http://localhost:9443/api/v1/image;
charset utf-8;
}
location /api/v1/image에서는 /api/v1/image 경로로 들어오는 요청을 리버스 프록시로 처리
proxy_pass 지시문에서는 해당 요청을 백엔드 서버의 주소로 전달하도록 설정. 이 경우, http://localhost:9443/api/v1/image로 요청이 전달되며, 백엔드 서버에서 해당 요청을 처리
location /api/v1/image: 이 설정은 /api/v1/image 경로로 들어오는 요청에 대한 설정을 지정
proxy_redirect off;: 프록시 응답의 리다이렉션을 해제한다. 이는 백엔드 서버에서 반환되는 리다이렉션 응답을 수정하지 않도록 설정
proxy_set_header: 프록시 요청 헤더를 설정한다. $http_host는 클라이언트의 Host 헤더 값을 그대로 전달하고, $remote_addr는 클라이언트의 IP 주소를 전달한다.$proxy_add_x_forwarded_for는 클라이언트의 IP 주소를 포함한 X-Forwarded-For 헤더를 설정하며, $scheme은 현재 사용 중인 프로토콜을 전달한다. Front-End-Https 헤더를 on으로 설정하여 프론트 엔드에서 HTTPS 연결을 사용함을 알린다.
proxy_set_header X-NginX-Proxy true;: X-NginX-Proxy 헤더를 true로 설정하여 백엔드 서버로 전달될 때 Nginx 프록시를 통해 전달되었음을 나타낸다.
proxy_pass http://localhost:9443/api/v1/image;: 설정된 요청을 백엔드 서버로 전달한다. 이 경우, 요청은 http://localhost:9443/api/v1/image로 프록시된다. 즉, 백엔드 서버의 해당 경로에 대한 처리를 위임하게 된다.
charset utf-8;: 전송되는 콘텐츠의 문자셋을 UTF-8로 설정한다. 이는 클라이언트로부터 받은 요청과 백엔드 서버로부터 받은 응답을 UTF-8로 인코딩 및 디코딩하는 데 사용된다.
tisotry.co.kr/api/v1/image 경로로 요청을 보낼 경우, Nginx는 해당 요청을 백엔드 서버로 프록시하여 처리하게 된다. 이를 통해 SSL 암호화와 로드 밸런싱 등의 기능을 제공
'업무 기록 > ETC' 카테고리의 다른 글
Node js 환경설정(gulp, nodemon, npmrc, npm install) (0) | 2023.07.26 |
---|---|
Linux 서버 권한변경 및 war 파일 올리기 (0) | 2023.07.13 |
리눅스 .sh(start.sh, stop.sh (0) | 2023.06.25 |
Eclips 환경설정(마켓플레이스, 사설망 Maven Update, mirror) (0) | 2023.06.24 |
리눅스 파일 (0) | 2023.06.24 |