이전에 학습했던 설정 이외에 server, location, evnets에 해당하는 설정 값들을 더 알아보도록 합시다.
( https://kkang-joo.tistory.com/31 )
server 블록
user nginx;
worker_processes 2;
...
http {
include mime.types;
...
server {
listen 80;
server_name localhost;
ssl_certificate cert/example.chained.crt;
ssl_certificate_key private/example.key;
ssl_session_timeout 5m;
location / {
...
}
}
}
server 블록은 하나의 웹 사이트를 선언하는 데 사용됩니다.
listen
이 웹 사이트가 바라보는 포트를 의미합니다
server_name
클라이언트가 접속하는 서버( 도메인 )
웹서버에 요청이 들어오면 request header에 해당 값과 일치하는지 확인하고 server를 분기한다.
ssl 관련 설정
인증서와 private key와 timeout 등등을 설정해 줄 수 있습니다.
location 블록
user nginx;
worker_processes 2;
...
http {
include mime.types;
upstream back-server {
server 127.0.0.1:3000;
keepalive 32;
}
...
server {
...
location / {
proxy_pass http://back-server;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
proxy_pass
ngx_http_proxy_module에 정의되어 있습니다.
nginx가 proxy로서 동작할 때, request를 중계받는 서버의 protocol과 address 그리고 location에 매핑될 URI를 설정합니다.
(protocol : http or https)
(address : domain name or ip:port)
위의 예시에서는 upstream에서 정의한 서버로 매핑하였습니다.
proxy_set_header
nginx가 proxy로 중계할 때,
중계받는 서버에 request header를 다시 재정의해서 전달할 때 사용합니다.
(X-Forwarded-For는 proxy 환경에서, HTTP Server에 요청한 clinet의 IP를 식별하기 위한 헤더
X-Real-IP를 사용하기도 합니다.)