본문 바로가기
업무 기록/ETC

리눅스(Linux) nginx 설정

by code2772 2023. 7. 11.

[ 목차 ]

    728x90
    반응형

     

    ✔ 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 암호화와 로드 밸런싱 등의 기능을 제공

     

    반응형