NodeJS와 Nginx 웹 서버
Nginx with nodejs
nginx를 사용해서 일반 웹 서비스와 node.js 애플리케이션을 연동하는 방법을 살펴보자.
Nginx 구성
Nginx 설치가 되었다고 가정한다.
nginx 구성 파일
/etc/nginx 밑에 가상 호스트 환경에 맞게 파일을 구성한다.
/etc/nginx/site-available/myhome.conf
1 | server { |
http 에 대한 구성
1 | http { |
nginx 구성을 재시작한다
1 | $ cd /etc/nginx/sites-enabled |
Nginx with Node.js
nodejs 를 연동하기 위한 Proxy 구성을 추가한다.
1 | server { |
SSL
Nginx를 이용해 SSL 제공을 해주자.
Private SSL 설정
1 | $ sudo mkdir /etc/nginx/ssl |
Nginx 설정
/etc/nginx/site-available/yoursite.com
1 | server { |
http 리다이렉트
http://serverfault.com/questions/250476/how-to-force-or-redirect-to-ssl-in-nginx
1 | server { |
The best way as it described in the official how-to is by using the return directive:
1 | server { |
site file 활셩화
1 | $ sudo ln -s /etc/nginx/sites-available/yourOdooSite.com /etc/nginx/sites-enabled/yourOdooSite.com |
CORS
CORS(Cross-Origin resource sharing)은 웹 페이지 도메인 밖의 다른 도메인에서 제한된 웹 페이지를 자원을 허용하도록 하는 메커니즘이다.[^2]
You need to enable CORS on the server (localhost:8080). Check out this site: http://enable-cors.org/
All you need to do is add an HTTP header to the server:
1 | Access-Control-Allow-Origin: http://localhost:3000 |
전체적으로 열어 주려
1 | Access-Control-Allow-Origin: * |
다음 같이 nginx 설정을 사용한다.
1 | et $cors ''; |
Nginx와 Proxy 서비스
Nginx를 앞단에 두고 Proxy를 이용해 nodeJS, Djang, Angular 등의 서비스를 이용할 때, nginx나 backend 둘 중 한 곳에서 CORS를 활성화 해주면 된다.
Nginx에서 CORS
Nginx에서 CORS를 허용하려면 아래 설정을 사용할 수 있다. [^1]
1 | location / { |
이와 비슷한 방법으로
https://gist.github.com/m4ttbrock/7337183
CORS node.js
https://enable-cors.org/server_expressjs.html
if your app is created with simple node.js set it in your response headers like
1 | var http = require('http'); |
if your app is created with express framework
use a CORS middleware like
1 | var allowCrossDomain = function(req, res, next) { |
cors module
cors 모듈을 이용할 수 있다.
https://github.com/expressjs/cors
Enable All CORS requets
1 | var cors = require("cors"); |
Enable CORS for a Single Route
1 | app.get("/products/:id", cors(), function (req, res, next) { |
Configuring CORS
1 | var corsOptions = { |
참조
[^1]: CORS on Nginx
[^2]: Cross-origin resource sharing
NodeJS와 Nginx 웹 서버