복붙노트

[NODEJS] Node.js를 + Nginx에 - 지금 무엇?

NODEJS

Node.js를 + Nginx에 - 지금 무엇?

해결법


  1. 1.Nginx와 프런트 엔드 서버로 작동하는이 경우 프록시에서 Node.js를 서버에 요청. 따라서 당신은 설정에 노드에 대한의 nginx 설정 파일이 필요합니다.

    Nginx와 프런트 엔드 서버로 작동하는이 경우 프록시에서 Node.js를 서버에 요청. 따라서 당신은 설정에 노드에 대한의 nginx 설정 파일이 필요합니다.

    이것은 내가 내 우분투 상자에 무엇을했는지 있습니다 :

    파일 yourdomain.com을 만들기에서의 / etc / nginx를 / 사이트-가능 / :

    vim /etc/nginx/sites-available/yourdomain.com
    

    그것은 당신이 뭔가를 같이해야한다 :

    # the IP(s) on which your node server is running. I chose port 3000.
    upstream app_yourdomain {
        server 127.0.0.1:3000;
        keepalive 8;
    }
    
    # the nginx server instance
    server {
        listen 80;
        listen [::]:80;
        server_name yourdomain.com www.yourdomain.com;
        access_log /var/log/nginx/yourdomain.com.log;
    
        # pass the request to the node.js server with the correct headers
        # and much more can be added, see nginx config options
        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://app_yourdomain/;
          proxy_redirect off;
        }
     }
    

    당신은뿐만 아니라 핸들 웹 소켓 요청에의 nginx를 (> = 1.3.13)하려면, 위치 / 구역에 다음 줄을 추가합니다 :

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    

    이 설정이 있으면 당신은 config 파일 위에서 정의 된 사이트를 사용하도록 설정해야합니다 :

    cd /etc/nginx/sites-enabled/ 
    ln -s /etc/nginx/sites-available/yourdomain.com yourdomain.com
    

    /var/www/yourdomain/app.js에서 노드 서버 응용 프로그램을 만들고 로컬 호스트에서 실행 : 3000

    var http = require('http');
    
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello World\n');
    }).listen(3000, "127.0.0.1");
    console.log('Server running at http://127.0.0.1:3000/');
    

    문법 실수에 대한 시험 :

    nginx -t
    

    다시 시작 nginx에 :

    sudo /etc/init.d/nginx restart
    

    마지막으로 노드 서버를 시작합니다 :

    cd /var/www/yourdomain/ && node app.js
    

    지금 당신은 yourdomain.com에서 "안녕하세요"를 참조한다

    노드 서버를 시작 관련하여 마지막으로 참고 : 노드 데몬에 대한 시스템을 모니터링의 어떤 종류를 사용해야합니다. 신출내기와 MONIT와 노드에서 멋진 튜토리얼이있다.


  2. 2.여러 Node.js를 프로세스에 전달, nginx를 사용하여 설치 여러 도메인 수도 있습니다.

    여러 Node.js를 프로세스에 전달, nginx를 사용하여 설치 여러 도메인 수도 있습니다.

    예를 들어 다음을 달성하기 위해 :

    이러한 포트 (4000 및 5000) 앱 코드에서 응용 프로그램의 요청을 들어하는 데 사용되어야한다.

    은 / etc / nginx를 / 사이트 사용 / domain1을

    server {
        listen 80;
        listen [::]:80;
        server_name domain1.com;
        access_log /var/log/nginx/domain1.access.log;
        location / {
            proxy_pass    http://127.0.0.1:4000/;
        }
    }
    

    은 / etc / nginx를 / 사이트 사용 / 도메인 2에서

    server {
        listen 80;
        listen [::]:80;
        server_name domain2.com;
        access_log /var/log/nginx/domain2.access.log;
        location / {
            proxy_pass    http://127.0.0.1:5000/;
        }
    }
    

  3. 3.또한 하나의 서버 구성에서 애플 리케이션을위한 다른 URL을 가질 수 있습니다 :

    또한 하나의 서버 구성에서 애플 리케이션을위한 다른 URL을 가질 수 있습니다 :

    은 / etc / nginx를 / 사이트 사용 / 사용자 도메인의 경우 :

    server {
        listen 80;
        listen [::]:80;
        server_name yourdomain.com;
    
        location ^~ /app1/{
            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:3000/;
        }
    
        location ^~ /app2/{
            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:4000/;
        }
    }
    

    다시 시작 nginx에 :

    sudo service nginx restart
    

    응용 프로그램을 시작.

    노드 app1.js

    var http = require('http');
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello from app1!\n');
    }).listen(3000, "127.0.0.1");
    console.log('Server running at http://127.0.0.1:3000/');
    

    노드 app2.js

    var http = require('http');
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello from app2!\n');
    }).listen(4000, "127.0.0.1");
    console.log('Server running at http://127.0.0.1:4000/');
    

  4. 4.Nginx에 통해 나는 프록시 독립적 인 노드 Express 애플리케이션.

    Nginx에 통해 나는 프록시 독립적 인 노드 Express 애플리케이션.

    따라서 새로운 애플리케이션을 쉽게 장착 할 수 있으며, 또한 서로 다른 위치에서 동일한 서버에 다른 물건을 실행할 수 있습니다.

    여기 Nginx의 구성 예 내 설치에 대한 자세한 내용은 다음과 같습니다 :

    올린 사람 : http://skovalyov.blogspot.dk/2012/07/deploy-multiple-node-applications-on.html


  5. 5.Nginx의 구성과 Node.js를.

    Nginx의 구성과 Node.js를.

    $ sudo nano /etc/nginx/sites-available/subdomain.your_domain.com
    

    우리는 "subdomain.your_domain.com"에서 올 때 Nginx에 서버에서 포트 3000의 트래픽에 프록시 리디렉션 역할을 그래서 다음과 같은 구성을 추가

    upstream subdomain.your_domain.com {
      server 127.0.0.1:3000;
    }
    server {
      listen 80;
      listen [::]:80;
      server_name subdomain.your_domain.com;
      access_log /var/log/nginx/subdomain.your_domain.access.log;
      error_log /var/log/nginx/subdomain.your_domain.error.log debug;
      location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://subdomain.your_domain.com;
        proxy_redirect off;
      }
    }
    

  6. 6.질문 2 답 :

    질문 2 답 :

    나는 그것이 훨씬 적은 자원을 소모 때문에 단순히 옵션 B를 사용합니다. 옵션을 'A', 모든 클라이언트가 필요한 모든 파일을로드, 서버가 메모리를 많이 소모하게됩니다 (심지어 내가 비록 PHP처럼,이 그것으로 문제 중 하나입니다). 옵션 'B'하면 라이브러리 (재사용 가능한 코드를)로드 할 수있는 모든 클라이언트 요청들 사이에서 공유 할 수 있습니다.

    하지만 여러 개의 코어가 있다면 당신은 그들 모두를 사용하는 Node.js를 조정할 것을 도자기합니다.


  7. 7.난 당신이, 방랑 - 노드의 nginx-상용구를 복제 할 수 Github에서의 저장소를 만든

    난 당신이, 방랑 - 노드의 nginx-상용구를 복제 할 수 Github에서의 저장소를 만든

    기본적으로는은 / var / www /에서 nodeapp IS에서 응용 프로그램을 Node.js를

    var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
    }).listen(4570, '127.0.0.1');
    
    console.log('Node Server running at 127.0.0.1:4570/');
    

    과 등의 nginx는 / 사이트-사용할 수의 nginx 설정이다 / / 상기 /

    server {
            listen 80 default_server;
            listen [::]:80 default_server;
    
            root /var/www/nodeapp;
            index index.html index.htm;
    
            server_name localhost;
    
            location / {
              proxy_pass http://127.0.0.1:4570;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
            }
    }
    

  8. 8.당신은 또한의 nginx에서 제공하는 디렉토리에 정적 파일을 생성하는 Node.js를 사용할 수 있습니다. 물론, 사이트의 일부 동적 부분은 노드에 의해 제공 될 수 있으며, Nginx에 의해 약간의 (정적).

    당신은 또한의 nginx에서 제공하는 디렉토리에 정적 파일을 생성하는 Node.js를 사용할 수 있습니다. 물론, 사이트의 일부 동적 부분은 노드에 의해 제공 될 수 있으며, Nginx에 의해 약간의 (정적).

    Nginx에 의해 그 중 일부를 역임 갖는 성능을 향상 ..


  9. 9.우리는 쉽게 설치 Nginx와는 역방향 프록시 역할을하여 Nodejs 응용 프로그램. 다음 구성은 NodeJS 응용 프로그램이 127.0.0.1:8080에서 실행되는 가정

    우리는 쉽게 설치 Nginx와는 역방향 프록시 역할을하여 Nodejs 응용 프로그램. 다음 구성은 NodeJS 응용 프로그램이 127.0.0.1:8080에서 실행되는 가정

      server{
         server_name domain.com sub.domain.com; # multiple domains
    
         location /{ 
          proxy_pass http://127.0.0.1:8080;  
          proxy_set_header Host $host;
          proxy_pass_request_headers on;  
         }
    
         location /static/{
           alias /absolute/path/to/static/files; # nginx will handle js/css
         }
       } 
    

    당신의 Nodejs 응용 프로그램 것 위의 설정에서,

    참고 :이 설정 논리 도메인 특정 요청 경로를 처리하기위한 명시 JS 응용 프로그램에 대한 미들웨어를 만들 수 있습니다


  10. 10.Nginx에 그냥 프로젝트 매니저처럼 작동 리버스 프록시 서버로 작동 할 수 있습니다. 그 요청을 받으면 그것을 분석하여 전달 요청 (프로젝트 멤버) 또는 핸들 자체 상류. Nginx와 그 구성 방법에 따라 요청을 처리하는 두 가지 방법이있다.

    Nginx에 그냥 프로젝트 매니저처럼 작동 리버스 프록시 서버로 작동 할 수 있습니다. 그 요청을 받으면 그것을 분석하여 전달 요청 (프로젝트 멤버) 또는 핸들 자체 상류. Nginx와 그 구성 방법에 따라 요청을 처리하는 두 가지 방법이있다.

    요청 서버

    다른 서버로 요청을 전달

    당신이 포트에서 Node.js를 서버를 실행하면 8000의 nginx는 node.js.에 요청을 전달합니다 쓰기는 논리를 Node.js를하고 요청을 처리합니다. 그것은 당신이 당신의 nodejs 서버의 nginx 서버 뒤에 실행해야 함을합니다.

    당신은 nodejs 그냥 장고, 플라스크, 다른 포트에 PHP와의 nginx에서 그것을 config (설정) 같은 다른 서비스를 실행하는 것 이외의 다른 서비스를 실행하려면.


  11. 11.당신은 당신이 각 microservice 수단을 관리하고 실행하려면 PM2를 사용하여 nodejs 실행할 수 있습니다. 노드를 잘 단지의 nginx에서 해당 포트를 구성 포트에서 실행됩니다 (/etc/nginx/sites-enabled/domain.com)

    당신은 당신이 각 microservice 수단을 관리하고 실행하려면 PM2를 사용하여 nodejs 실행할 수 있습니다. 노드를 잘 단지의 nginx에서 해당 포트를 구성 포트에서 실행됩니다 (/etc/nginx/sites-enabled/domain.com)

    server{
        listen 80;
        server_name domain.com www.domain.com;
    
      location / {
         return 403;
      }
        location /url {
            proxy_pass http://localhost:51967/info;
        }
    }
    

    로컬 호스트 핑을 사용하여 실행 여부 확인.

    Create one single Node.js server which handles all Node.js requests. This reads the requested files and evals their contents. So the files are interpreted on each request, but the server logic is much simpler.
    

    당신이 너무 쉽게 말했듯이 최고입니다


  12. 12.Nginx에와 Nodejs와 가장 간단 설치가 proxy_protocol 활성화와 함께 HTTP 및 TCP 부하 분산 장치로의 Nginx를 사용하는 것입니다. 이러한 맥락에서, Nginx에가 아닌 프록시 서버 자체에, nodejs에 프록시 들어오는 요청을 할 수 있습니다, 또한 백엔드 Nginx의 서버에 SSL 연결을 (를) 종료됩니다. (SSL-통과)

    Nginx에와 Nodejs와 가장 간단 설치가 proxy_protocol 활성화와 함께 HTTP 및 TCP 부하 분산 장치로의 Nginx를 사용하는 것입니다. 이러한 맥락에서, Nginx에가 아닌 프록시 서버 자체에, nodejs에 프록시 들어오는 요청을 할 수 있습니다, 또한 백엔드 Nginx의 서버에 SSL 연결을 (를) 종료됩니다. (SSL-통과)

    모든 웹 응용 프로그램은 (또는이어야한다) 때문에 제 생각에는, 보안 환경을 사용하여 비 SSL 예제를 제공하는 것은 아무런 도움이되지 않습니다.

    /etc/nginx/nginx.conf에 프록시 서버의 예 설정,

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    events {
        worker_connections  1024;
    }
    http {
      upstream webserver-http {
        server 192.168.1.4; #use a host port instead if using docker
        server 192.168.1.5; #use a host port instead if using docker
      }
      upstream nodejs-http {
        server 192.168.1.4:8080; #nodejs listening port
        server 192.168.1.5:8080; #nodejs listening port
      }
      server {
        server_name example.com;
        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-Host $server_name;
          proxy_set_header Connection "";
          add_header       X-Upstream $upstream_addr;
          proxy_redirect     off;
          proxy_connect_timeout  300;
          proxy_http_version 1.1;
          proxy_buffers 16 16k;
          proxy_buffer_size 16k;
          proxy_cache_background_update on;
          proxy_pass http://webserver-http$request_uri;
        }
      }
      server {
        server_name node.example.com;
        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-Host $server_name;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "Upgrade";
          add_header       X-Upstream $upstream_addr;
          proxy_redirect     off;
          proxy_connect_timeout  300;
          proxy_http_version 1.1;
          proxy_buffers 16 16k;
          proxy_buffer_size 16k;
          proxy_cache_background_update on;
          proxy_pass http://nodejs-http$request_uri;
        }
      }
    }
    stream {
      upstream webserver-https {
        server 192.168.1.4:443; #use a host port instead if using docker
        server 192.168.1.5:443; #use a host port instead if using docker
      }
    
      server {
        proxy_protocol on;
        tcp_nodelay on;
        listen 443;
        proxy_pass webserver-https;
      }
      log_format proxy 'Protocol: $protocol - $status $bytes_sent $bytes_received $session_time';
      access_log  /var/log/nginx/access.log proxy;
      error_log /var/log/nginx/error.log debug;
    }
    

    이제, 백엔드 웹 서버를 처리 할 수 ​​있습니다. /etc/nginx/nginx.conf :

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    load_module /etc/nginx/modules/ngx_http_geoip2_module.so; # GeoIP2
    events {
        worker_connections  1024;
    }
    http {
        variables_hash_bucket_size 64;
        variables_hash_max_size 2048;
        server_tokens off;
        sendfile    on;
        tcp_nopush  on;
        tcp_nodelay on;
        autoindex off;
        keepalive_timeout  30;
        types_hash_bucket_size 256;
        client_max_body_size 100m;
        server_names_hash_bucket_size 256;
        include         mime.types;
        default_type    application/octet-stream;
        index  index.php index.html index.htm;
        # GeoIP2
        log_format  main    'Proxy Protocol Address: [$proxy_protocol_addr] '
                            '"$request" $remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
    
        # GeoIP2
        log_format  main_geo    'Original Client Address: [$realip_remote_addr]- Proxy Protocol Address: [$proxy_protocol_addr] '
                                'Proxy Protocol Server Address:$proxy_protocol_server_addr - '
                                '"$request" $remote_addr - $remote_user [$time_local] "$request" '
                                '$status $body_bytes_sent "$http_referer" '
                                '$geoip2_data_country_iso $geoip2_data_country_name';
    
        access_log  /var/log/nginx/access.log  main_geo; # GeoIP2
    #===================== GEOIP2 =====================#
        geoip2 /usr/share/geoip/GeoLite2-Country.mmdb {
            $geoip2_metadata_country_build  metadata build_epoch;
            $geoip2_data_country_geonameid  country geoname_id;
            $geoip2_data_country_iso        country iso_code;
            $geoip2_data_country_name       country names en;
            $geoip2_data_country_is_eu      country is_in_european_union;
        }
        #geoip2 /usr/share/geoip/GeoLite2-City.mmdb {
        #   $geoip2_data_city_name city names en;
        #   $geoip2_data_city_geonameid city geoname_id;
        #   $geoip2_data_continent_code continent code;
        #   $geoip2_data_continent_geonameid continent geoname_id;
        #   $geoip2_data_continent_name continent names en;
        #   $geoip2_data_location_accuracyradius location accuracy_radius;
        #   $geoip2_data_location_latitude location latitude;
        #   $geoip2_data_location_longitude location longitude;
        #   $geoip2_data_location_metrocode location metro_code;
        #   $geoip2_data_location_timezone location time_zone;
        #   $geoip2_data_postal_code postal code;
        #   $geoip2_data_rcountry_geonameid registered_country geoname_id;
        #   $geoip2_data_rcountry_iso registered_country iso_code;
        #   $geoip2_data_rcountry_name registered_country names en;
        #   $geoip2_data_rcountry_is_eu registered_country is_in_european_union;
        #   $geoip2_data_region_geonameid subdivisions 0 geoname_id;
        #   $geoip2_data_region_iso subdivisions 0 iso_code;
        #   $geoip2_data_region_name subdivisions 0 names en;
       #}
    
    #=================Basic Compression=================#
        gzip on;
        gzip_disable "msie6";
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/css text/xml text/plain application/javascript image/jpeg image/png image/gif image/x-icon image/svg+xml image/webp application/font-woff application/json application/vnd.ms-fontobject application/vnd.ms-powerpoint;
        gzip_static on;
    
        include /etc/nginx/sites-enabled/example.com-https.conf;
    }
    

    이제,이 SSL을 가상 호스트를 구성 할 수 및 proxy_protocol는 /etc/nginx/sites-available/example.com-https.conf에서 config (설정)를 사용할 수 :

    server {
        real_ip_header proxy_protocol;
        set_real_ip_from 192.168.1.1; #proxy server ip address
        #set_real_ip_from proxy; #proxy container hostname if you are using docker
        server_name 192.168.1.4; #Your current server ip address. It will redirect to the domain name.
        listen 80;
        listen 443 ssl http2;
        listen [::]:80;
        listen [::]:443 ssl http2;
        ssl_certificate     /etc/nginx/certs/example.com.crt;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        return 301 https://example.com$request_uri;
    }
    server {
        real_ip_header proxy_protocol;
        set_real_ip_from 192.168.1.1; #proxy server ip address
        #set_real_ip_from proxy; #proxy container hostname if you are using docker
        server_name  example.com;
        listen       *:80;
        return 301   https://example.com$request_uri;
    }
    server {
        real_ip_header proxy_protocol;
        set_real_ip_from 192.168.1.1; #proxy server ip address
        #set_real_ip_from proxy; #proxy container hostname if you are using docker
        server_name www.example.com;
        listen 80;
        listen 443 http2;
        listen [::]:80;
        listen [::]:443 ssl http2 ;
        ssl_certificate     /etc/nginx/certs/example.com.crt;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        return 301 https://example.com$request_uri;
    }
    server {
        real_ip_header proxy_protocol;
        set_real_ip_from 192.168.1.1; #proxy server ip address
        #set_real_ip_from proxy; #proxy container hostname if you are using docker
        server_name example.com;
        listen 443 proxy_protocol ssl http2;
        listen [::]:443 proxy_protocol ssl http2;
        root /var/www/html;
        charset UTF-8;
        add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header Referrer-Policy no-referrer;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;
        keepalive_timeout   70;
        ssl_buffer_size 1400;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8 8.8.4.4 valid=86400;
        resolver_timeout 10;
        ssl_certificate     /etc/nginx/certs/example.com.crt;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
        ssl_trusted_certificate /etc/nginx/certs/example.com.crt;
    location ~* \.(jpg|jpe?g|gif|png|ico|cur|gz|svgz|mp4|ogg|ogv|webm|htc|css|js|otf|eot|svg|ttf|woff|woff2)(\?ver=[0-9.]+)?$ {
        expires modified 1M;
        add_header Access-Control-Allow-Origin '*';
        add_header Pragma public;
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        access_log off;
        }
        location ~ /.well-known { #For issuing LetsEncrypt Certificates
            allow all;
        }
    location / {
        index index.php;
        try_files $uri $uri/ /index.php?$args;
        }
    error_page  404    /404.php;
    
    location ~ \.php$ {
        try_files       $uri =404;
        fastcgi_index   index.php;
        fastcgi_pass    unix:/tmp/php7-fpm.sock;
        #fastcgi_pass    php-container-hostname:9000; (if using docker)
        fastcgi_pass_request_headers on;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_request_buffering on;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        include fastcgi_params;
    }
    location = /robots.txt {
        access_log off;
        log_not_found off;
        }
    location ~ /\. {
        deny  all;
        access_log off;
        log_not_found off;
        }
    }
    

    그리고 마지막으로,이 노드의 샘플 웹 서버를 JS : 첫 번째 서버 :

    var http = require('http');
    
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello From Nodejs\n');
    }).listen(8080, "192.168.1.4");
    console.log('Server running at http://192.168.1.4:8080/');
    

    두 번째 서버 :

    var http = require('http');
    
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello From Nodejs\n');
    }).listen(8080, "192.168.1.5");
    console.log('Server running at http://192.168.1.5:8080/');
    

    이제 모든 것이 완벽하게 작동해야하며, 부하 균형.

    A는 다시 동안 난 부두 노동자의 TCP 부하 분산 장치로의 Nginx를 설정하는 방법에 대해 썼다. 당신은 부두 노동자를 사용하는 경우를 확인하세요.

  13. from https://stackoverflow.com/questions/5009324/node-js-nginx-what-now by cc-by-sa and MIT license