내가 개발하는 Node 서비스들은 모두 앞단에 Nginx를 사용하고 있다.
Nginx 에서 정적 파일을 가져올때 더욱 빠를 뿐더러 동시에 Nginx는 Reverse Proxy Server로서의 역활도 하는데, Nginx가 Reverse Proxy Server 역활을 함으로서 로드밸런싱 , 가속 , 익명성을 통한 보안 강화가 가능하다.
Reverse Proxy Server란 서버의 방화벽과 백엔드 서버 사이에서 클라이언트 요청을 핸들링 해주는 서버
설치환경
- Ubuntu 16.04.1 LTS / nginx/1.10.3(Ubuntu)
그럼 바로 설치를 시작해보자.
Nginx 설치하기
> apt-get update
> apt-get install nginx
설치후 설치된 서버 아이피로 접속해서 정상적으로 Welcome to nginx! 메세지가 뜨는지 확인해보자. 정상적으로 뜨지 않는다면 방화벽 문제나 내부 아이피 포트포워딩을 안해줬을 수도 있다 (80번 포트)
이렇게 Nginx 서버가 바로 만들어졌다!
Nginx와 Node 연결하기 (default 수정 방식)
정상적으로 Nginx가 설치 완료되었다면 /etc/nginx/site-enabled 디렉토리로 들어가보자. default 단일 파일이 하나 자리잡고 있는데, 이걸 에디터를 사용하여 열어준다.
> nano default //nanoedit를 사용했으나 vi를 사용해도 무관.
이후 다음과 같은 설정파일을 만날수 있는데
server {} > localtion / 부분에서 proxy_pass http://node서버 주소:포트번호 를 작성하여 연결한다.
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
//이 부분에 proxy_pass를 추가해준다.
proxy_pass http://10.0.100.5:8080; //중요.
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
이후 Nginx 서버를 재 시작 시켜주면 완료!
> service nginx restart
해당 서버에서 정상적으로 node 서버로 접속되는지 확인 해보자.
끝