NGINX는 웹 서버 소프트웨어로, 정적인 파일 HTML, CSS, 이미지, PDF 등을 처리해주고 리버스 프록시, 메일 프록시 기능도 해준다.
nginx의 설정을 바꾸려면 /etc/nginx/nginx.conf를 가면 된다. nginx 설정은 보통 3블럭으로 나뉘는데 다음과 같다.
http {
...
server {
...
location {
...
}
}
}
HTTP 블록
루트 블록이다. 기본 설정, 로그 설정, Gzip 설정 등등 설정 사항이 있다. 크게 바꿀 일은 없는 듯 하다.
SERVER 블록
특정 타입의 요청을 처리하는 가상 서버를 정의한다. 요청 들어오는 도메인 이름, 포트, IP에 따라서 여러 개의 서버로 라우팅 시킬 수 있다.
예를 들면 A라는 인스턴스가 호스팅 되고 있는데, http://www.foo.com/ 과 http://www.bar.com의 도메인을 동시에 갖다면, foo로 들어왔을 때와 bar로 들어왔을 때 각각 다른 웹페이지를 보여줄 수 있도록 설정할 수 있다는 것이다.
LOCATION 블록
이 부분은 한 서버 내에서 어떤 URI를 갖느냐에 따라 각각 그에 맞는 경로를 지정해 주는 것이다. 굉장히 유동적으로 설정할 수 있기 때문에 관리자 맘대로 지정할 수 있다.
proxy_pass : http를 사용하여 통신할 수 있는 단일 서버에 요청을 전달한다. 주로 location 블록 내에 있다. proxy_pass와 일치하는 요청이 들어오면 해당하는 url로 이동하게 된다. 예를 들어
location /foo/bar {
proxy_pass http://www.abc.com;
}
이렇게 설정이 되어 있다면, 뒤에 uri가 설정되어 있지 않기 때문에 클라이언트가 요청한 uri는 그대로 간다. /foo/bar/baz로 요청이 들어오면 http://www.abc.com/foo/bar/baz가 된다.
그런데,
location /foo/bar {
proxy_pass http://www.abc.com/lorem/ipsum;
}
이렇게 되어 있다면, /foo/bar/baz로 요청이 들어오면 http://www.abc.com/lorem/ipsum/baz가 된다는 것이다.
에러 메시지 1)
could not build the server_names_hash, you should increase server_names_hash_bucket_size: 64
도메인 제한 길이가 64로 짧기 때문에 server_name_hash를 생성할 수 없다는 메시지이다. default로 32 혹은 64로 설정되어 있나보다. 이럴 땐
http { server_names_hash_bucket_size 64 }
접속할 수 있는 도메인의 최대 길이를 정한다.
에러 메시지 2)
413 Request Entity Too Large
파일 업로드를 하거나 할 때 한 번에 요청으로 실행할 수 있는 처리 용량이 너무 작을 경우 나게 되는 경우이다. 이럴 때는 다음과 같이 설정을 해준다.
server { client_max_body_size 20M; }
20M 대신에 다른 숫자를 넣어도 상관은 없다.
참고가 되었던 곳
'Programming > Server' 카테고리의 다른 글
/dev/null 이해하기 (0) | 2021.10.14 |
---|---|
[AWS RDS] Django + Postgresql + RDS 설정하기! (0) | 2017.06.09 |
[AWS] AWS에 FileZilla로 SFTP에 접속하기 (0) | 2017.01.26 |
[AWS] EC2에 접속하기 (Mac) (0) | 2017.01.13 |
[AWS] Free Tier EC2 인스턴스를 만들어보았다. (0) | 2017.01.13 |