windows环境下nginx反向代理node.js

举报
fengfeng 发表于 2017/03/07 11:48:30 2017/03/07
【摘要】 为什么要做用nginx反向代理node.js呢?因为node.js本身即可部署web服务器,但是,nginx处理静态文件请求和记录web访问日志有天然的优势,而且单独用Node你如何处理单个IP上的多个Virtual Host? 我想项目组既然这样去做选择,肯定有它的原因,你只需要记得nginx性能很牛,反向代理node.js服务器性能更优就好了,作为一个小兵,不要问太多为什么,实现它吧!

背景:为什么要做用nginx反向代理node.js呢?因为node.js本身即可部署web服务器,但是,nginx处理静态文件请求和记录web访问日志有天然的优势,而且单独用Node你如何处理单个IP上的多个Virtual Host   我想项目组既然这样去做选择,肯定有它的原因,你只需要记得nginx性能很牛,反向代理node.js服务器性能更优就好了,作为一个小兵,不要问太多为什么,实现它吧!

 

1 安装node.jsnginx。具体怎么安装配置(略)

2 修改nginx的配置文件:

  文件路径:nginx/conf/nginx.conf

  添加upstream和修改Server(这里我们配置两个server,分别监听两个node.js布置的两个服务器端口,即localhost:3000localhost:4000

upstream nodesite1{

        server localhost:3000;

    } 

server {

        listen       80;//如果80端口被占用了,可以改端口

        server_name  mysite1.com; 

        #charset koi8-r;

        #access_log  logs/host.access.log  main; 

        location / {

            proxy_pass   http://nodesite1;

            proxy_redirect off;

            proxy_http_version 1.1;

            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_read_timeout 300s;

        }

upstream nodesite2{

        server localhost:4000;

    } 

server {

        listen       80;//如果80端口被占用了,可以改端口

        server_name  mysite2.com; 

        #charset koi8-r;

        #access_log  logs/host.access.log  main; 

        location / {

            proxy_pass   http://nodesite2;

            proxy_redirect off;

            proxy_http_version 1.1;

            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_read_timeout 300s;

        }

3 修改本地hosts文件:

为了让程序看起来更像一个网站,而不是指定127.0.0.1或者localhost来进行访问,我们需要修改本地的hosts文件,给localhost指定一个域名,文件路径为:

C:\Windows\System32\drivers\etc\hosts

使用记事本或者神马别的编辑工具打开(notepad++等),在末尾加上我们指定的mysite1.commysite2.com就好了,如下:


4、 构建两个node.js小程序, listen的端口设定分别设定为30004000

app1.js的内容如下:

var http = require('http');

http.createServer(function (request, response) {

// 发送 HTTP 头部

// HTTP 状态值: 200 : OK

// 内容类型: text/html

response.writeHead(200, {'Content-Type': 'text/html'});

// 发送响应数据 "Hello World"

    response.end('<button>Hello World</button>');

}).listen(3000);

console.log('Server running at http://127.0.0.1:3000/');

App2.js的内容如下: 

var http = require('http');

http.createServer(function (request, response) {

// 发送 HTTP 头部

// HTTP 状态值: 200 : OK

// 内容类型: text/html

response.writeHead(200, {'Content-Type': 'text/html'});

response.write ("<head><meta charset='utf-8'></head>");

// 发送响应数据 "Hello World"

    response.end('<br/><center>人这一辈子,要走很多弯路、暗路、险路,唯有意志坚定的人,最终才能走上明路!</center>');

}).listen(4000);

console.log('Server running at http://127.0.0.1:4000/');

分别运行两个server:




5 启动nginx

  Cmdnode.exe路径下

 测试nginx配置是否正确nginx -t

启动nginx, 命令为:start nginx  或者直接nginx.exe

  输入http://mysite1.com/  http://mysite2.com/

作者 |杨翔

转载请注明出处:华为云博客 https://portal.hwclouds.com/blogs

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。