[Node] Setup an Nginx Proxy for a Node.js App

Learn how to setup an Nginx proxy server that sits in front of a Node.js app. You can use a proxy to control the flow of frontend requests hitting your app, as well as to achieve better performance and scalability. We'll create a sample Node.js app and configure a default Nginx configuration file to proxy web requests.

 

Create a node app:

// Load the http module to create an http server.
var http = require('http');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Welcome to Node.js!\n");
});

// Listen on port 3000, IP defaults to 127.0.0.1
server.listen(3000);

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:3000/");

The app running on port 3000.

 

Run the node app:

node index.js

 

See the output:

curl localhost:3000

We will see:

Welcome to Node.js!

 

Now, start the nginx:

service nginx start

 

Varifiy nginx started:

curl localhost // by default nginx running on port 80

We will see the default nginx html.

 

Modify the nginx config in '/etc/nginx/sites/enabled/default':

server {
    location / {
        proxy_set_header Host $host;
        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_pass http://localhost:3000;
    }
}

 

Restart nginx:

service nginx reload

 

now do:

curl localhsot

Previously we saw the default nginx page, now we should see our node app's output. That means our nginx poxy works, it successfully redirect localhost:80 to localhost:3000.

posted @ 2017-07-21 16:33  Zhentiw  阅读(247)  评论(0编辑  收藏  举报