Server Config (Nginx)

Seokchan Yun·2022년 6월 25일
0

Server Config (Ngnix)

config

  • arg인자가 없을경우, default config 로 실행 해야한다.
  • arg 개수에 따른 error 처리 해야한다. ( If, error msg 의 종류가 다양하다면 모아서 하나의 class를 만드는 작업이 효율적일까(?) )
  • 필수 정보(sujet) 가 누락되거나 필요 이상의 정보가 config file에 있는경우 error 처리
  • config file 형식을 nginx 형식(?) 중괄호, 세미콜론 etc 문법에 맞추어 작성 ( cjung-mo )
  • =/ 문법(?) - Hyungyoo 추가정리 요청.
  • config file parsing을 통해서 socket 생성 && request && response 에 필요한 path / body-length / port 등의 정보를 쉽게 가져오게 해야한다.

Parsing

  1. default || arg 에 맞는 path 로 config file open
  2. getline(미정) 으로 라인 받아서, ; || ' ' || {} etc (디테일한 규칙 미정) 으로 분리
  3. multi server 가 가능하기 때문에 각각의 location에 해당하는 정보들을 따로 분리하여 보관할 공간이 필요하다.
  server { # simple reverse-proxy
    listen       80;
    server_name  domain2.com www.domain2.com;
    access_log   logs/domain2.access.log  main;

    # serve static files
    location ~ ^/(images|javascript|js|css|flash|media|static)/  {
      root    /var/www/virtual/big.server.com/htdocs;
      expires 30d;
    }

    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
      proxy_pass      http://127.0.0.1:8080;
    }
  }

위의 예시 코드와 같이 다양한 location 처리를 해야 하기 때문에 config 파일을 parsing해서 하나의 구조체나 클래스에 보관 할 수 없다.
std::vector template 로 vector를 생성해서 각각의 location 에 맞는 root path etc... (정보 추가 요청) 저장한다.

slack으로 보내드린 webserv-practice/cbaek_example/docker_nginx 에 들어가셔서 docker-compose up 으로 config file test가 가능합니다.

  1. getter 와 setter를 이용해서 socket 구성과 request 에 필요한 정보를 넘겨줄 수 있게 구성.
profile
42 Paris developer

0개의 댓글