Nginx - Install, WebDAV, Proxy on Ubuntu/Debian
nginx를 사용해서 일반 웹 서비스, SSL, WebDav 서비스와 다른 외부 웹 서비스와 연동하는 설정을 해보자.
- 여기서 
node.js애플리케이션을 연동한다. 
## Nginx 설치와 구성
우분투/데비안 계열에서 apt-get install 명령으로 설치한다.
Nginx 설치
1  | $ sudo apt-get install nginx  | 
우분투/데비안 계열은 /etc/nginx 밑에 nginx 설정 파일이 위치한다.
1  | nginx/  | 
- htpasswd: apache-utils의 
htpasswd유틸리티로 생성한 Basic auth 계정 파일 - ssl/ : SSL 인증서 파일
 - nginx.conf : nginx의 전역 설정 파일, 사이트 설정 및 가상 호스트 설정은 sites-available 에 선언.
 - sits-available: 웹 사이트 설정 파일
 - sites-enabled:
 
새 사이트 정의
가장 좋은 방법은 기존 default 설정 파일을 복사해 수정한 후 사용한다.
1  | $ cd /etc/nginx/  | 
my-site
가상 호스트 파일을 /etc/nginx/sites-available/ 폴더에 추가하고 site-enabled에 링크를 해주면 된다. 아래 내용으로 /etc/nginx/sites-available/my-site 파일을 다음 같이 추가해 준다.
1  | server {  | 
사이트 활성화는 /etc/nginx/site-enabled 폴더에 소프트 링크를 걸어준ㄷ.
1  | $ sudo ln -s /etc/nginx/sites-available/my-site /etc/nginx/sites-enabled/my-site  | 
Debian, Ubuntu 계열은 Ubuntu 15.x, Debian Wizzy 이후? 시스템 서비스를 systemd 로 다룬다. nginx도 systemd 스크립트로 관리할 수 있다. systemd 관련 내용 참조 - [^6]
1  | $ sudo systemctl reload nginx.service  | 
만약 설정 파일에 문제가 있으면 systemctl status nginx.service 결과에 어느 줄에서 문제가 있는지 확인할 수 있다.
Nginx for Node.js
Nginx를 메인 웹 서버로 사용하고 여기에 연결되는 URL, Location에 따라 nginx 외부의 다른 서비스에서 처리하게 하는 방법을 proxy 를 연결하는 것이다. 즉, nginx에서 Node.js, Django, Tomcat 같은 웹 서비스의 통로로 사용한다.
http://www.albertauyeung.com/post/setup-jupyter-nginx-supervisor/
proxy
1  | server {  | 
설정 파일이 제대로 구성됐는지 테스트해본다. sudo nginx -t [^1]
## WebDAV
Nginx에서 WebDAV는 nginx-extras 패키지를 설치한다.
1  | $ sudo apt-get install nginx nginx-extras  | 
혹은 chgrp로 그룹만 변경할 수 있다.
1  | $ chgrp www-data /home/qkboo/WebDav  | 
Basic Auth
HTTP Auth 는 htpasswd 유틸리티로 사용자 이름과 아이디를 등록해서 사용한다. [^5]
1  | $ sudo apt-get install apache2-utils  | 
WebDav용 설정
위에서 사용한 my-site 설정에 다음 같이 WebDav 디렉토리 위치를 추가한다.
1  | server {  | 
more configures
http://nginx.org/en/docs/http 에 있는 세부 설정중 사용한 것.
Upload size
POST로 multi-part 업로드시에 다음 에러가 보이면 nginx의 기본 업로드 크기를 2M 이하로 설정되어 그렇다.
1  | [error] 31354#0: *10899 client intended to send too large body: 1198151 bytes, client: <IP address>, server: example.com, request: “POST /wp-admin/async-upload.php HTTP/1.1”, host: “example.com”, referrer: “http://example.com/wp-admin/post.php?post=<post id>&action=edit”  | 
client_max_body_size 속성을 server, location 에 설정해 준다:
1  | client_max_body_size 20M;  | 
limit_rate
limit_rate, limit_rate_after 는 함께 사용
1  | location /flv/ {  | 
## 참조
[^1]: nginx command
[^5]: Http Auth
[^6]: 서버 프로세스 관리에 대해
Nginx - Install, WebDAV, Proxy on Ubuntu/Debian
https://thinkbee.github.io/2017-04-03-ubuntu-nginx-72805493fb26/