GithubHelp home page GithubHelp logo

webserv's Introduction

Web Server Project | 웹서버 프로젝트

This project involves the creation of a web server that mimics the behavior of Nginx, adhering strictly to the HTTP 1.1 standards. 이 프로젝트는 HTTP 1.1 표준을 준수하면서 Nginx와 유사하게 동작하는 웹서버를 구현하는 것입니다.

Introduction | 소개

This project involves the creation of a web server that mimics the behavior of Nginx, adhering strictly to the HTTP 1.1 standards. 이 프로젝트는 HTTP 1.1 표준을 준수하면서 Nginx와 유사하게 동작하는 웹서버를 구현하는 것입니다.

Installation | 설치 방법

Instructions to install and build the project are provided in the repository. Follow the steps to compile the server. 프로젝트를 설치하고 빌드하는 지침은 저장소에서 제공됩니다. 서버를 컴파일하기 위한 단계를 따르십시오.

Usage | 사용 방법

To start the server, use the following command: 서버를 시작하려면 다음 명령어를 사용하세요:

./webserv [configuration file]

If no configuration file is specified, the server will use a default configuration file. 구성 파일이 지정되지 않은 경우 서버는 기본 구성 파일을 사용합니다.

If no configuration file is specified, the server will use a default configuration file. 구성 파일이 지정되지 않은 경우 서버는 기본 구성 파일을 사용합니다.

Features

기능

  • Non-blocking I/O operations using kqueue.
  • kqueue을 사용한 논블로킹 I/O 작업.
  • Supports HTTP methods GET, POST, and DELETE.
  • HTTP 메서드 GET, POST, DELETE 지원.
  • File upload capability.
  • 파일 업로드 기능.
  • Static website serving.
  • 정적 웹사이트 서빙.
  • Custom error pages for missing resources.
  • 리소스가 없는 경우 사용자 정의 오류 페이지 제공.

Configuration | 구성

The server configuration can be modified by editing the config file. Key settings include: 서버 구성은 config 파일을 편집하여 수정할 수 있습니다. 주요 설정은 다음과 같습니다:

  • Multiple listening ports.
  • 여러 리스닝 포트.
  • Server name setup.
  • 서버 이름 설정.
  • Custom error pages.
  • 사용자 정의 오류 페이지.
  • Limit on client body size.
  • 클라이언트 본문 크기 제한.
  • Routing rules.
  • 라우팅 규칙.
  • HTTP redirections.
  • HTTP 리디렉션.
  • Directories and files for serving content.
  • 콘텐츠 제공을 위한 디렉토리 및 파일.

Dependencies | 의존성

Ensure you have the following dependencies installed: 다음 의존성이 설치되어 있는지 확인하십시오:

  • C++98 compiler (e.g., GCC, Clang)
  • C++98 컴파일러 (예: GCC, Clang)
  • Standard C++98 and C libraries as mentioned in the project specifications.
  • 프로젝트 사양에 언급된 표준 C++98 및 C 라이브러리.
  • macOS operating system, as this program utilizes kqueue, which is specific to macOS.
  • macOS 운영 체제, 이 프로그램은 macOS에 특화된 kqueue를 사용하기 때문입니다.
  • To run on Linux, you need to change the code in kqueue to epoll or poll or select.
  • Linux에서 실행하려면 kqueue의 코드를 epoll 또는 poll 또는 select로 변경해야 합니다.

POST (현재 발행중)

블로그 링크

webserv's People

Contributors

hawardshin avatar daejlee avatar besyia0k0 avatar jh-jin avatar

Stargazers

YoonJu Ham avatar Myukang avatar  avatar 이소현 avatar  avatar Jun avatar  avatar

Forkers

hawardshin

webserv's Issues

✨ [Feature] interface에 LocBlock을 추가 + LocBlock에서 error_code vector getter

✨ 이슈 체크리스트

  • 이슈 제목: [Feature] '기능 내용 상세'
  • Assignees, Label을 붙여주세요.

📄 기능 개요

  • interface에 LocBlock을 추가
  • LocBlock에서 error_code vector getter추가

📝 기능 상세 내용

  • parsing을 해주면서 location block이 특정되기 때문에 ServBlock을 찾아서 LocBlock 클래스 변수를 udata에 인터페이스에 추가해야한다고 느꼈습니다.
  • 추가적으로 error_code vector를 얻는게 LocBlock에서 빠져서 그 부분 추가하고자 합니다.

✅ TODO

  • LocBlock에 vector getter
  • udata interface에 LocBlock 멤버변수 추가

📍 레퍼런스

✨ [Feature] 쿠키 추가관련 요청

✨ 이슈 체크리스트

  • 이슈 제목: [Feature] '기능 내용 상세'
  • Assignees, Label을 붙여주세요.

📄 기능 개요

  • 보너스에 쿠키와 세션 파트가 있습니다.

📝 기능 상세 내용

  • 쿠키 세션 구현을 위해서 필요한 것은 다음과 같습니다.
  • 그에 따라서 request측에서는 Cookie헤더를 받아야하고
  • response측에서는 쿠키가 있다면 아무것도 하지 않고 쿠키가 없다면 새로운 세션을 만들어서 Set-Cookie: 헤더에 세션 ID를 담아서 보내주면 될 것 같습니다.
  • 어딘가에 Session ID에 대한 값을 가지고 있어야 해서 그것을 저장할 위치도 지정해야합니다.
  • 저희는 세션 쿠키만을 구현하면 될 것 같아서 굳이 유효기간을 설정하지는 않겠습니다.(이래도 되나..?)

✅ TODO

  • request Cookie 헤더 파싱
  • 세션을 저장할 저장소 코드에 추가
  • 세션 저장소를 확인해서 response 에 Set-Cookie 헤더 추가

📍 레퍼런스

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.