博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
由nodejs+nginx搭配而成的高并发服务器
阅读量:6999 次
发布时间:2019-06-27

本文共 1847 字,大约阅读时间需要 6 分钟。

nginx监听网站80端口,而nodejs监听端口是8000,就可以配置nginx反向代理到nodejs的3000端口,同理,也可以配置代理到多个不同的端口,就可以实现
一台服务器同时服务多个域名,并且可以让nginx负责网站的静态资源请求。有效提高网站的吞吐量和性能!

最简单的做法

直接修改nginx配置,增加下面配置

server {    listen       80;                # 监听80端口    server_name node.bluej.cn;      # 监听的域名    #access_log  /web/nodejs/access.log;     #配置了一下来访日志,怕占用硬盘,关了    error_log   /web/nodejs/error.log;      #配置了一下错误日志    ## 针对静态资源做优化,所有静态资源由nginx来处理,注意有新的类型记得加进来    location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js|doc|docx|xls|xlsx|zip|rar|mp3|mp4)$         {        root /web/nodejs;       #指向根目录        expires max;            #用来设置缓存时间    }    ## node线程,只负责动态部分    location /{        proxy_pass http://127.0.0.1:8000;   #反向代理,指向具体的node监听端口        proxy_redirect     off;                           #关闭地址的重定向        # 在代理请求头中加入下面的信息,方便我们用nodejs获取一些客户端信息        proxy_set_header   Host             $host;        #本机地址(ip或域名)        proxy_set_header   X-Real-IP        $remote_addr; #客户端真实ip        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;#客户端真实ip    }}复制代码

常见问题

  1. 访问页面超时 有可能是读取文件fs.readFile的路径出问题了,不同环境下,路径写法有所区别,正确的兼容写法应该是
    var path = require("path");//引入path模块path.join(__dirname, "../view/index.html");//参数一,表示你当前文件所在物理绝对路径,参数二就是你具体要访问的路径了复制代码
    否则,很容易请求超时,因为无法读取正确的文件路径
  2. nginx访问静态文件,老是报403 Forbidden 原因可能是 nginx没有访问目录的权限,在 nginx.conf 文件中,标注了user www www;,所以,咱们网站根目录所在的父文件夹的拥有者必须也是www用户,所以,记得设置一下你的目录拥有者
    chown www:www /web复制代码
  3. 如何设置我们的nodejs网站可以开机启动 如果你是用pm2
    pm2 startuppm2 save  复制代码
    就会把你启动的网站信息存在 ~/.pm2/dump.pm2,例如 /root/.pm2/dump.pm2
    其它同类型产品一样道理

如何搞均衡负载

在配置里,在server段前面加上upstream段

upstream nodejs_upstream {    server 127.0.0.1:8000;    server 127.0.0.1:8001;    server 127.0.0.1:8002;}server{    ...    location /{        proxy_pass http://nodejs_upstream    }    ...}复制代码

上面的配置意思是nginx会自动分配请求到多个ip端口地址中,实现均衡负载

参考资料

转载于:https://juejin.im/post/5b17ff6c6fb9a01e7f2e9dff

你可能感兴趣的文章
JAVA 数据计算、取整、+1、四舍五入
查看>>
wshell修改了upload功能,増加显示图片功能
查看>>
ERP中标准成本的差异分析控制
查看>>
linux 中断的上半部和下半部
查看>>
单例模式的七种写法
查看>>
好用到吐血!APP设计利器Sketch
查看>>
Android TensorFlow环境搭建
查看>>
【细品架构1/100】架构之缘起
查看>>
在js中获取后台传出的json数据
查看>>
Drools的JSR94实现形式
查看>>
oracle的nvl和nvl2
查看>>
hdfs 写orc
查看>>
1.9 xz压缩和解压缩
查看>>
IDEA如何自动提示并补全syso和main呢?
查看>>
9.数组和向量
查看>>
JXL读写Excel
查看>>
mysql自定义排序
查看>>
java UDP 一对一文件传输
查看>>
Netty5入门学习笔记003-TCP粘包/拆包问题的解决之道(下)
查看>>
SpringMVC之@ResponseBody
查看>>