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;