Gidhub BE Developer

Nginx 적용하기

2020-04-28
goodGid

Nginx

  • 비동기 이벤트 기반의 웹서버 소프트웨어이다.

  • 적은 쓰레드로 클라이언트의 Request 처리한다.

  • Reverse Proxy로 동작 할 수 있다.


Reverse Proxy

  • 클라이언트는 Reverse Proxy Server에 요청을 한다.

  • 요청을 받은 Reverse Proxy는 내부 서버에 전달하고

    내부 서버의 응답을 클라이언트에게 전달한다.

  • Reverse Porxy가 존재하기 때문에

    클라이언트는 Origin Server로 직접 요청을 할 수 없게 된다.

    그러므로 높은 보안성이 유지된다.

  • 1개의 Reverse Proxy Server에

    여러 Origin Server를 연결할 수 있으므로 Load Balancing이 가능해진다.


Setting

Step 0.

  • Nginx 설정 환경은 다음과 같다.

    • Ubuntu 18.04.3

Step 1.

  • 서버의 80, 443, 8080 포트를 오픈한다.

  • [AWS 기준] : EC2의 보안그룹 – 인바운드 설정에서 80, 443, 8080 포트를 오픈한다.


Step 2.

  • 서버에 접속하여 nginx를 설치한다.
sudo apt update -y
sudo apt-get install nginx -y

Step 3.

  • nginx 설치 후 정상적으로 설치가 되었는지 체크한다.
sudo systemctl status nginx


Step 4.

  • nginx가 자동으로 시작되게 설정한다.
sudo systemctl start nginx
sudo systemctl enable nginx

Step 5.

  • nginx 설정 파일을 수정한다.
sudo vim /etc/nginx/sites-available/default
  • /etc/nginx/sites-available/default에 있는 내용을 아래 내용으로 변경한다.
server {

  listen 80;
  listen [::]:80;
  server_name My_Project_Name;
    ex) server_name ec2_ip;
    ex) server_name dns_name;
    ex) server_name goodgid.ga;

  location / {
    proxy_pass http://localhost:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
  }
}
  • 위 설정은 굉장히 기본적인 설정이므로

    만약 HTTPS 설정과 Load Balance 기능 활성화를 원한다면

    위 설정을 무시하고 Nginx Configuration으로 변경한다.


Step 6.

  • nginx를 재시작하여 변경된 설정을 적용시킨다.
sudo service nginx restart

Step 7.

  • 1.1.1.1:8080 형식의 요청이 아닌

    1.1.1.1 형식의 요청이 유효한지 체크한다.


Command Line

Check Nginx Status

sudo systemctl status nginx

Check Config

sudo nginx -t   # 정상적으로 Config가 수정되었는지 체크한다.

Example

ubuntu@node1:/var/log/nginx$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Restart

sudo service nginx restart
sudo service nginx reload

Default Log

# File : /etc/nginx/nginx.conf
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

Index