Nginx

skyju·2023년 4월 4일
1

Dev-ops

목록 보기
1/3

NGINX?

  • High performance load balancer, web server, API gateway & reverse proxy
  • 비동기 방식이기 때문에 매우 높은 성능
  • 정적인 파일(주로 f.e file들)을 서비스할 때 뛰어난 성능(vs 톰캣)
  • load balancer나 API gateway 용도로도 사용 가능
  • DDOS 공격 방어도 가능하다
client ->(80 or 443) -> nginx -> (/) -> f.e
							  -> (/api) -> b.e
  • / 로 들어오는 요청은 프론트엔드의 라우터로, /api로 들어오는 요청은 백엔드로 보낸다
  • Webserver로서의 역할을 수행한다.
  • API gateway로서의 역할을 수행한다.
sever {
	listen 80 default_server;
    listen [::]80 default_server;

    root /var/www/html/dist; 	 # Front 빌드 파일 위치
    index index.html index.htm ; # index 파일명
    sever_name _; 				 # 서버 도메인

    location / {
    	try_files $uri $uri/ /index.html;
    }
    location /api {
    	proxy_pass http://localhost:8399/api/;
        proxy_redirect off;
        charset utf-8;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_far;
        proxy_set_header X-Forwarded-Proto $schema;
        proxy_set_header X-NginX-Proxy true;
    }
}
  • 설정파일의 위치 : /etc/nignx/nignx.conf
  • 80번 포트로 들어오는 내용을 다른 포트로 분산시켜줄 수 있다.
  • error_log : /var/log/nginx/error.log warn

기본적인 가동 명령어

systemctl start nginx # 시작
systemctl restart ngnix # 재시작
systemctl stop nginx # 중지

Apache와의 차이점?

  • Nginx는 Event-Driven방식, Apache는 thread/process를 기반으로 동작한다.
  • Event-Driven?
    서버로 들어오는 여러 connection을 Event-Handler를 통해 비동기방식으로 처리를 하게 한다. 적은 메모리로 서버를 운영할 수 있다.
    싱글 스레드, 프로세스로 작동한다.
    socker read / writer, I/O 등 CPU가 관여하지 않아도 되는 작업을 진행할 때는 기다리지 않고 다른 작업을 수행한다. 진행 중인 I/O 등의 작업이 종료되면 이벤트가 발생하며 그 다음 작업 처리를 시작한다.
profile
https://github.com/skyju

0개의 댓글