월별 글 목록: 2014년 4월월

Apahce, Nginx를 node.js의 프록시로 연결하기

node.js는 그 자체로 웹서버의 역할을 하기 때문에, PHP같은 서버 언어와는 달리 웹서버를 별도로 필요로 하지 않습니다.
하지만 한 서버에서 두 가지 이상의 언어를 사용해야 하는 경우엔 Apache나 Nginx를 통해서 node.js를 실행하도록 처리할 필요가 있습니다. (그 반대의 경우도 있을 수 있겠는데 찾아보진 않았습니다..)

과거엔 Apache나 Nginx의 보안 성능에 기대를 걸고 많이 그런 처리를 했다고도 하고요, 최근의 node.js는 보안도 개선이 되어서 그럴 필요가 없다는 의견도 있더군요. 자세한 부분은 좀 더 찾아봐야 할 것 같습니다.

여튼 Apahce라면 httpd.conf에서, Nginx라면 nginx.conf에서 프록시 설정을 해줄 수 있습니다.

Apache의 경우라면,

<VirtualHost *:80>
    ServerAdmin     {ADMIN_EMAIL}
    ServerName      {SERVER_NAME}
    ServerAlias     {SERVER_ALIAS}
    ErrorLog        logs/error_log
    CustomLog       logs/access_log common
    ProxyRequests   off
    <Proxy *>
        Order       deny,allow
        Allow       from all
    </Proxy>
    <Location />
        ProxyPass           http://localhost:{PORT}/
        ProxyPassReverse    http://localhost:{PORT}/
    </Location>
</VirtualHost>

Nginx의 경우라면

server {
    listen 80;
    server_name {SERVER_NAME};

    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://127.0.0.1:{PORT}/;
      proxy_redirect off;
    }

    gzip on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_min_length  1000;
    gzip_disable     "MSIE [1-6]\."
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}

위와 같이 내용을 추가해주면 됩니다.