왜?
nginx를 통해 proxy로 사용하거나 다른 웹프레임워크와의 연결할때 nginx.conf 및 app.conf를 작성할 때 상당히 많은 기능들을 제공하고있으며, 필요한 기능은 정리하고 익숙해지고싶었다.
반드시 설정파일 작성을 적용하는 것을 까먹지 말자
nginx -s reload
docker 환경이라면
docker container exec <container> nginx -s reload
시작하기에 앞서
nginx의 conf파일들의 경로를 자세히 정리하겠다
/etc/nginx/nginx.conf
에 존재하며 다음의 conf.d 디렉토리에 있는*.conf
파일들을 http{ } 안에 서 include 한다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23# nginx.conf
user nginx;
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;
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;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}/etc/nginx/conf.d
안에 원하는.conf
1
2
3
4
5
6
7server {
listen 80;
server_name chatting.lostcatbox.com;
location / {
return 301 https://$host$request_uri;
}
}/etc/nginx/conf.d
안에는default.conf
가 기본으로 제공되므로 80번포트로 들어오는것을 변경하거나 수정하고, 서비스하는것을 개발단계에서 localhost 80번 포트로 이뤄진다면 app.conf작성후 default.conf파일을 삭제하는것이 중요하다.(원하는대로 안되서 이게 원인이였음)간단하게 html만 서비스를 하고싶다면 root 경로를 변경하거나 index.html을 대체해서 쓸수있다.
1 | server { |
static file 관련
파일 지정 방법
root 경로 + /ticket이 최종 uri의 바라보게되는 경로이다.
/usr/share/nginx/html/ticket/index.html
1 | location /ticket { |
만약 location URI first를 삭제하고싶다면(위에서 root경로) alias
를 이용하자
/usr/share/nginx/html/index.html
1 | location /ticket { |
proxy_pass
같은 80번 포트의 요청이라도 도메인기준으로 응답서버를 다르게할수있다.
nginx1.appsroot.com이 요청은 root /home/nginx1에서 index.html을 응답한다.
nginx2.appsroot.com/start 요청은 root /home/nginx2 + /start 경로에서 start.html을 응답한다.
(아래 설정은 default.conf에 추가했다고 가정한다)
1 | server { |
log 경로
별도로 access log 설정을 하지 않으면 하나의 logs/access.log
파일로 쌓입니다.
해당 .conf의 server에 다음과 같이 작성한다.
그리고 해당경로의 /var/log/nginx/
에 mkdir <서버이름>
해줘야한다(해당 디렉토리존재해야함)
1 | server { |
nginx.conf의 기본 설정은 /var/log/nginx/error.log access.log가 존재한다