글이 좀 길어져서 나누어 보았다.
앞 글에선 nginx의 conf에 대한 기본적인 설명과 동작 방식에 대해서 정리했다.
이 글에선 location 지시어의 좀 더 구체적인 사용법 및 가상 호스트, 서브 도메인, 프록시 서버에 대한 정리를 해보자.
location directive 사용법
로케이션 지시어는 서버 블락 안에서 URI 매칭을 해준다.
regex도 지원한다.
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
URI 가 /와 매칭된다면, root에 명시된 주소와 URI를 합친다.
만약, 매칭 후보가 여럿이라면 '가장 긴 prefix'에 해당하는 주소를 고른다.
/images/로 시작하는 URI라면 서버는 /data/images/ 디렉터리로 부터 파일을 전송한다. (없을 경우 404)
예를 들어, http://localhost/images/example.png 는 /data/images/example.png로 바뀐다.
/images/로 시작 안되는 것을은 모두 /data/www/로 매핑
예를 들어, http://localhost/some/example.png는 /data/www/some/example.png로 바뀐다.
Proxy Server 설정법
프록시 서버란?
해당 서버를 통해서 다른 네트워크 서비스로 '중계'해주는 소프트웨어/서버를 말한다.
- Receive requests and pass them to the proxied servers
- Retrieves responses from them and send them to the client
프록시 서버를 통해서 뒤에 위치해 있는 분산 시스템을 숨길 수 있으며,
'Reverse Proxy'라고도 부른다.
관련 설정 예시를 보면,
server {
listen 8080;
root /data/up1; # maps all requests to the /data/up1 (local file system)
# server의 context 속에 위치할 수도 있음 (location에 root 지시어가 따로 없다면)
location / {
}
}
server {
location / {
proxy_pass http://localhost:8080;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
위와 같이, '/'로 접속 했을 때, gif/jpg/png 패턴에 걸리지 않는 요청의 경우
모두 8080 포트로 중계된다.
참고로, regex는 ~로 시작된다 (좌우엔 스페이스)
두 번째 location의 역할은
- filter requests ending with .gif, .jpg, .png
- and map them to /data/images/ directory by adding URI to the root directive parameter
Nginx가 location block을 선택하는 기준을 다시 복습해보면,
1. 로케이션 디렉티브의 파라미터를 체크하고, 가장 긴 프리픽스 매칭에 해당하는 것을 기억
2. regex를 체크해서 일치하는 게 있다면 해당 로케이션 선택, 그렇지 않다면 1번에서 기억했던 것을 선택
Cache Server 설정법 자료
https://www.nginx.com/resources/wiki/start/topics/examples/reverseproxycachingexample/
혹은,
nginx 공홈에서 공개된 pdf에 잘 나와있던 것으로 기억한다.
https://www.nginx.com/resources/library/complete-nginx-cookbook/
읽다보면 속도 향상을 위한 옵션이 나오는데 (메모)
- speed up options ; 4page, reset_timeout_connections on; 및 gzip 사용..
Upstream 이란?
웹서버를 다루다 보면, 업스트림 이란 단어가 나온다.
Nginx 자체 모듈에도 upstream이라고 있음.
업스트림이란 Origin 서버라고도 불리며,
여러 대의 컴퓨터가 순차적으로 어떤 일을 할 때, 어떤 서비스를 받는 서버를 의미한다.
Nginx 자체는 Down Stream 서버라 할 수 있다.
Upstream은 nginx의 내장 모듈로서, 부하 분산(로드밸런싱) 및 속도 개선에 쓰인다!
사용법도 매우 간단하다.
https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/
그 외 참고자료
http://nginx.org/en/docs/beginners_guide.html
nginx 주요 설정
https://sarc.io/index.php/nginx/61-nginx-nginx-conf
소켓이란?
http://eastroot1590.tistory.com/entry/socket-socket%EC%9D%B4%EB%9E%80
유닉스 소켓 vs. TCP/IP host:port
https://serverfault.com/questions/195328/unix-socket-vs-tcp-ip-hostport
유닉스 소켓
대표적인 nginx 설정 예시
http://areumgury.blogspot.com/2016/08/nginx.html
nginx의 기본적인 보안 설정
'http&server' 카테고리의 다른 글
딥러닝 모델의 API화 (AWS lambda) (1) | 2021.01.27 |
---|---|
celery + flask 를 이용한 파이썬 비동기 처리 API 구현 (0) | 2021.01.05 |
03. Nginx 기초 사용법 정리 1 (conf, directives) (0) | 2020.07.29 |
02. flask + gunicorn + docker 조합 (0) | 2020.07.29 |
01. Web Server, WAS, CGI, WCGI에 대해 (0) | 2020.07.29 |