이중 nginx.conf가 default로 nginx가 로드해서 사용하는 config 파일 입니다. 아래와 같은 Default 설정을 확인 할수 있습니다.
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
전부다 알아 보기는 너무 복잡하고 뭐가 뭔지 알기 어렵습니다.
이 설정 중 우리는 browser에서 내 html 파일이나 js파일을 hosting해서 화면을 보고 싶은 것이니, 명확하게 눈에 띄는 'http {' 로 시작하는 블럭을 살펴 보면 됩니다.
http 블럭내부에 server라는 블럭이 하나 보이고 그안에 몇가지 설정을 확인 할 수 있습니다.
listen: 'listen 80' 이라는 항목은 현재 server가 open하고자 하는 port 입니다. http가 기본 80 port를 사용하기 때문에 80으로 설정되 있습니다.
server_name: 'server_name localhost'는 현재 server로 유입되는 request(요청)이 localhost일 경우 현재 server block의 설정을 적용한다는 의미 입니다. locahost는 본인 pc에서 테스트 할때 사용할 수 있고, 만약 다른 url로 server를 운영하려면 이부분을 바꿔야 합니다.
server_name의 설정으로 서버에서는 분기를 만들수 있습니다.
server_name에는 wild card, regular express와 같은 pattern도 가능 합니다.
모든 domain을 처리 하려면 _를 넣어 주면 됩니다. 'server_name _' 와 같습니다.
location: 가장 중요한 항목입니다. location은 현재 위에 설정된 80 port의 server_name의 domain을 가진 요청을 location에 설정된 항목을 serving해주게 됩니다. location에 파일 경로를 넣어 주면, 그 파일이 hosting되고, proxy_pass와 같이 중간 proxy 역할을 넣어주면 자연스럽게 proxy에 연결된 주소로 연결시켜 주게 됩니다.
아래 Default 설정의 의미를 살펴 보겠습니다.
root는 현재 server machine(pc)의 경로(directory) 입니다.
index index.html index.html은 nginx를 통해 접속시 첫 페이지(index page)를 보여줄 파일 이름입니다.
html/index.html 이게 없다면 html/index.htm 파일이 사이트 접속시 보여지게 됩니다.
location / {
root html;
index index.html index.htm;
}
현재 nginx의 설정되는 directory의 path기준은 nginx.exe가 존재하는 경로 입니다.
아래 그림에서 볼수 있는 것과 같이 nginx.exe와 같이 html directory가 있습니다.
그리고 그 내부에 50x.html과 index.html 파일이 존재 함을 확인 할 수 있습니다.
저 index.html 파일이 아마 설정없이 nginx를 실행 시켯을때 보여지는 default 화면의 html 소스입니다.
50x.html는 에러 표기를 위한 html 소스 파일입니다. 위 conf 소스 중 아래와 같은 부분이 있습니다.