Nginx

“Nginx(엔진 x라 읽는다)는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다.” (출처 : 위키백과)

uwsgi로 runserver를 하지 않아도 접속할 수 있게 되었으나, 더 나아가 포트 번호 없이 클라이언트가 접속하게 하려면 Nginx로 사용자와 django 웹 서버를 연결시킨다.





Django웹앱과 Nginx와의 연동

1. nginx설치

  • nginx 설치.

1
sudo apt-get install nginx


2. nginx.conf 파일 수정

nginx.conf 파일을 수정할 때, 최고 권한이 필요하므로 앞에 sudo를 써준다.


1
sudo vim /etc/nginx/nginx.conf

http 태그 안에 아래 코드를 추가한다.

※ nginx upstream : Nginx 서버는 User - Nginx - uWSGI - Django처럼 중간 다리 역할을 한다. 사용자로부터 nginx가 받은 request를 어느 서버에 넘겨줄지 정해주는 것이 upstream이다. 아래보면 uwsgi.sock 파일을 지정해서 django의 uWSGI 서버로 request를 전달하도록 설정한다.

1
2
3
upstream django {
server unix:/home/ubuntu/(uwsgi.sock 파일 경로);
}


3. default 파일 수정


1
sudo vim /etc/nginx/sites-enabled/default

server 태그 안에 다음 코드 추가한다. #1에는 manage.py가 있는 djagno 프로젝트 폴더의 경로를 써준다.

uwsgi_pass 다음의 django는 위에서 써주었던 upstream django를 가리킨다.


1
2
3
4
5
6
7
8
9
location /static/ {
root /home/ubuntu/(#1);
}


location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
}


4. nginx 설정 갱신

설정을 갱신한 후에는 포트 번호를 입력하지 않아도 IP주소나 DNS만 입력하면 접속이 가능하다. 도메인을 구입하여 IP주소를 대체하면 일반 사이트처럼 접속할 수 있다.


1
sudo service nginx reload

포트번호 없이 접속 성공