교육/코드스테이츠

[15일차] nginx & cors

nooh_ij 2022. 12. 16. 19:58

 

 

 

nginx란

  •  - 경량 웹 서버로 클라이언에게 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용된다
  •  - Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다

 

 

  • 특징
    •  - include을 사용해서 설정파일을 분리해서 관리
    •  - ngnix 위치:  sudo find / -name nginx.conf를 통해 찾음 수 있음 -> etc/nginx/
    •  - ' conf.d' 디렉터리를 “ .conf” 등을 통해 분리
    •  - .conf 확장자를 가진 파일은 모두 환경 설정을 위한 파일이며, nginx.conf의 경우 기본적인 환경 설정을 위해 사용된다
    •  - 환경 설정은 nginx.conf 파일에 값을 지정하여 설정한다.
    •  - nginx.conf 파일은 논리적으로 작성되어 있는 지시어(Directives) 목록이라고 할 수 있다.
    •  - 애플리케이션 전체가 지시어에 부여하는 값에 의해서 작동한다.
    •  - 특정 지시어의 묶음 형태로 모듈을 만들어 이를 통해 작동하기도 한다.
    •  - 가장 기본적인 지시어들은 NGINX의 코어 모듈(npm)에 포함되어 있으며, 필요한 모듈을 만들어 사용할 수 있다
    •  - 클라이언트-서버의 역할은 제공자(서버) 관점에서 달라질 수 있다
    •  - nginx는 정적 파일을 제공하는 웹서버로, 설정 파일과, 정적 파일이 담긴 var/www/ 디렉토리가 존재한다.
    •  - nginx 설정을 통해 다른 포트, 다른 디렉토리의 파일을 제공할 수 있다.
    •  - WAS는 별도의 포트에서 실행된다.

 

  • nginx 설치 및 상태 확인
    • sudo apt-get update: 업데이트
    • sudo apt-get install nginx: nignx 설치하기
    • sudo service nginx start: 시작하기
    • sudo systemctl stop nignx: 종료하기
    • sudo service nginx stop: 종료하기
    • sudo systemctl status nginx: 상태 확인하기
    • nginx -t: nginx 설정파일이 문법에 맞게 작성 되어있는지 검사

 

  • 수정 후 다시 시작이 필요
    •  - systemctl restart nginx
    •  - sudo service nginx restart

 

 

nginx 파일 구조(지시어)

  • worker_processes number | auto;
    • nginx 프로세스 실행 가능 수를 정의하는 지시어
    • 최적의 값으로는 CPU의 코어 수, 데이터를 저장하는 하드 디스크 수, 로드 패턴을 비롯한 여러 요인에 따라 달라진다
    • 보통은 CPU 코어 수 만큼을 할당하는 것이 보통이며, auto로 설정해두면 자동으로 값을 알맞게 설정해 준다.

 

  • include file | mask;
    •  - include 지시어는 특정 파일을 포함하는 기능을 수행한다.
    •  - 지시어가 있는 바로 그 위치에 해당 파일 내용이 삽입 된다
    •  - 필요한 설정을 파일 단위로 나누어 include 지시어로 간편하게 사용 가능하다
    •  - conf.d 디렉토리 안에 있는 "모든 .conf파일과 sites-enabled디렉토리 안 파일들을 사용 할 수 있다.
    •   - sites-available: 비활성화된 사이트들의 설정 파일들이 위치한다.
    •  - sites-enabled: 활성화된 사이트들의 설정 파일들이 위치한다. default -> /etc/nginx/sites-available/default

  • ex) conf 파일을 만들고 서버블록에 설절을 넣고 html파일을 실행루트에 만들고 실행

 

  • events { ... }
    • 네트워크의 작동 환경을 설정하는 지시어를 제공합니다.
    • worker_connections
    • 하나의 프로세스가 처리할 수 있는 연결(connections)의 수로, 최대 연결 수는 worker_processes X worker_connections 로 계산한다.

 

  • sever block
    • 서버 기능을 설정하는 블록
    • 어떤 주소: 포트로 요청을 받을지 결정한다.
    • listen(포트 번호)과 server_name(DNS)를 통해 관리한다.
    • server 블록은 하나의 호스트를 선언하는데 사용하며, http 블록 안에서만 사용된다.
    • server 블록 안에는 한 개 이상의 location 블록을 선언할 수 있다.

 

  • http block
    • http 프로토콜을 사용한다는 블록으로 웹서버에 대한 동작을 설정한다 .
    • HTTP 부분과 관련된 모듈의 지시어와 값을 정의하며, 이후 설명할 server와 location의 루트 블록이라고 할 수 있다.
    • http, server, location 블록은 계층 구조를 가지고 있으며, 많은 지시어가 각 블록에서 동시에 사용될 수 있다.
    • http 블록의 내용은 server 블록의 기본값이 되고, server 블록은 location 블록의 기본 값이 된다.
    • 만약 상위 블록에서 선언된 지시어를 하위 블록에서 다시 선언하면 상위의 지시어는 무시된다.
    • http 블록 안에는 한 개 이상의 server 블록을 선언할 수 있다.

 

  • location block
    • 요청 url을 분석하여 세부 설정
    • ex) helloworld.com:80/, helloworld.com:82/documents/, helloworld.com:80/images
    • location 뒤에 /를 넣으면 매칭 됐다고 표현

 

 

CORS

  • origin
    • Protolcol과 Host, Port 까지 모두 합친 URL을 의미

출처: https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-CORS-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-%F0%9F%91%8F

 

 

  • sop(same origin policy)
    •  - 동일한 출처에 대한 정책으로 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식이다.

 

  • cors(cross origin resource sharing)
    •  - 다른 출처의 리소스 공유에 대한 허용/비허용 정책이다.
    •  - 추가 HTTP헤더를 사용하여 한출처에서 실행 중인 웹애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다.

 

CORS로 인한 에러 메세지

 

 

 

 

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-CORS-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-%F0%9F%91%8F

 

[WEB] 📚 악명 높은 CORS 개념 & 해결법 - 정리 끝판왕 👏

악명 높은 CORS 에러 메세지 웹 개발을 하다보면 반드시 마주치는 멍멍 같은 에러가 바로 CORS 이다. 웹 개발의 신입 신고식이라고 할 정도로, CORS는 누구나 한 번 정도는 겪게 된다고 해도 과언이

inpa.tistory.com