
nginx는 웹서버로 중 하나로, 가볍고 여러 요청을 한 번에 처리할 수 있는 장점을 가지고 있다.
동작이 가볍고 단순하여 동시접속에 특화되어 있다는 특징을 가지고 있다.
nginx는 Event Driven(비동기처리방식)이고 요청이 들어오면 어떤 동작을 해야하는지 알려주고 다른 요청을 처리하는 방식이다. 모든 입출력을 Event Listener로 전달하기 때문에 1개의 프로세스로 보다 빠른 작업이 가능하다.
nginx의 conf 옵션에 대해서 알아보겠다.
user nginx; # 프로세스의 실행되는 권한. 보안상 root를 사용하지 않습니다.
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream docker-server {
server server:8080;
}
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /api {
proxy_pass http://docker-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;
}
location /socket {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://docker-server;
}
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
server_tokens off;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
events 블록
http 블록