windows环境下nginx反向代理node.js
背景:为什么要做用nginx反向代理node.js呢?因为node.js本身即可部署web服务器,但是,nginx处理静态文件请求和记录web访问日志有天然的优势,而且单独用Node你如何处理单个IP上的多个Virtual Host? 我想项目组既然这样去做选择,肯定有它的原因,你只需要记得nginx性能很牛,反向代理node.js服务器性能更优就好了,作为一个小兵,不要问太多为什么,实现它吧!
1、 安装node.js和nginx。具体怎么安装配置(略)
2、 修改nginx的配置文件:
※ 文件路径:nginx/conf/nginx.conf
※ 添加upstream和修改Server(这里我们配置两个server,分别监听两个node.js布置的两个服务器端口,即localhost:3000和localhost: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.com和mysite2.com就好了,如下:
4、 构建两个node.js小程序, listen的端口设定分别设定为3000和4000
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
①: Cmd至node.exe路径下
②: 测试nginx配置是否正确nginx -t
③:启动nginx, 命令为:start nginx 或者直接nginx.exe
④: 输入http://mysite1.com/ 和 http://mysite2.com/
- 点赞
- 收藏
- 关注作者
评论(0)