Node.js中怎么配置和使用Nginx服务器

node.js是一个基于chrome javascript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。node.js 使用事件驱动, 非阻塞i/o 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用,如实时聊天等等。然而对于gzip编码,静态文件,http缓存,ssl处理,负载平衡和反向代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省网站的流量从而提高网站的加载速度。
流程图

Node.js中怎么配置和使用Nginx服务器

nginx配置如下:

 http {  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;  proxy_temp_path /var/tmp;  include    mime.types;  default_type application/octet-stream;  sendfile    on;  keepalive_timeout 65;   gzip on;  gzip_comp_level 6;  gzip_vary on;  gzip_min_length 1000;  gzip_proxied any;  gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  gzip_buffers 16 8k;   ssl_certificate /some/location/sillyfacesociety.com.bundle.crt;  ssl_certificate_key /some/location/sillyfacesociety.com.key;  ssl_protocols    sslv3 tlsv1;  ssl_ciphers high:!anull:!md5;   upstream silly_face_society_upstream {   server 127.0.0.1:61337;   server 127.0.0.1:61338;   keepalive 64;  }   server {   listen 80;   listen 443 ssl;    server_name sillyfacesociety.com;   return 301 $scheme://www.sillyfacesociety.com$request_uri;  }   server {    listen 80;    listen 443 ssl;     server_name www.sillyfacesociety.com;     error_page 502 /errors/502.html;     location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {     root /usr/local/silly_face_society/node/public;     access_log off;     expires max;    }     location /errors {     internal;     alias /usr/local/silly_face_society/node/public/errors;    }     location / {     proxy_redirect off;     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-nginx-proxy  true;     proxy_set_header  connection "";     proxy_http_version 1.1;     proxy_cache one;     proxy_cache_key sfs$request_uri$scheme;     proxy_pass     http://silly_face_society_upstream;    }  }}

登录后复制

配置段说明

http {  ...  upstream silly_face_society_upstream {   server 127.0.0.1:61337;   server 127.0.0.1:61338;   keepalive 64;  }  ...}

登录后复制

nginx负载均衡多个nodo.js实例。keepalive 64 指示nginx在任何时候保持最少64个http/ 1.1连接到代理服务器。如果有更多的流量nginx将打开更多的连接。

http {  ...  server {    ...    location / {     proxy_redirect off;     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_set_header  connection "";     proxy_http_version 1.1;     proxy_pass     http://silly_face_society_upstream;    }    ...  }}

登录后复制

将符合哪些的请求发送到代理上。nginx的匹配规则可以取看看前面的文章。
nginx处理静态内容

http {  ...  server {    ...    location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {     root /usr/local/silly_face_society/node/public;     access_log off;     expires max;    }    ...  }}

登录后复制

设置缓存

http {  ...  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;  proxy_temp_path /var/tmp;  ...}http { server {   ...   location / {     ...     proxy_cache one;     proxy_cache_key sfs$request_uri$scheme;     ...   }   ... }}

登录后复制

缓存是通过http头部来控制的。

helloworld
试验一下,我们来写个helloworld.js

var http = require('http');   http.createserver(function (request, response) {    response.writehead(200, {'content-type': 'text/plain'});  response.end('hello world'); }).listen(61337);   console.log('server running at http://127.0.0.1:61337/');

登录后复制

然后用node helloworld.js指令开启,这样跑在本地的机子的nodejs的程序就算开起来了,占用的是8000端口,可自己修改。

此时确定在nginx的vhost.conf里面的设置应有:

server {   listen 80;   server_name jb51.net.jb51.net;   location / {   proxy_pass http://127.0.0.1:61337;   } }

登录后复制

将网站域名设置好,然后端口设置为80,最后proxy_pass设置为http://127.0.0.1:61337,将所有从jb51.net:80的请求传递到nodejs程序去。
重启nginx、访问域名,就可以了看到helloworld了。
虽然node.js本身就可以做服务器是没错啦,比如welcome.js里面设置为80端口就可以了。
但是一个机子跑多个网站,其他网站又是用别的服务器,在80端口已经被占用的情况下,是可以用代理到别的端口来处理的。

以上就是Node.js中怎么配置和使用Nginx服务器的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2630979.html

(0)
上一篇 2025年3月7日 03:07:24
下一篇 2025年3月5日 22:25:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.js站点使用Nginx作反向代理时怎么配置GZip压缩

    node.js 开发的站点,如果你也是用了nginx实现反向代理. 那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅. 前提条件: node.js + nginx 反向代理. node.js 需要做的工作: express 4.0…

    编程技术 2025年3月7日
    200
  • 如何在PHP开发中使用Node.js进行Web应用开发和部署

    作为一种非阻塞式javascript运行环境,node.js已经成为了web应用开发中的一种强有力的工具。许多php开发者已经开始使用node.js来开发和部署web应用,而且node.js与php的结合可以产生许多有用的功能。本篇文章将指…

    编程技术 2025年3月7日
    200
  • nodejs是什么

    nodejs是一个基于Chrome V8引擎的JavaScript运行时,用于构建高性能、可扩展的网络应用程序。nodejs的出现使得JavaScript可以在服务器端运行,开发人员可以使用同一种语言来构建前后端应用,减少了学习成本和代码的…

    2025年3月7日
    200
  • 玩转Lerna,助你轻松搭建Monorepo

    什么是 Monorepo?  monorepo是具有多个相关服务、项目和组件的单个存储库,不同的团队可以使用它来存储相关或不相关项目的代码。monorepo 一词源自 mono,意思是单个,而 repo 是存储库的缩写。 Monorepo …

    2025年3月7日 编程技术
    200
  • nodejs怎么写爬虫

    nodejs写爬虫的方法步骤:1、安装Node.js;2、创建一个文件命名为`crawler.js`;3、定义要爬取的网页URL;4、使用`axios.get()`方法发送HTTP GET请求来获取页面内容;获取内容后使用`cheerio.…

    2025年3月7日
    200
  • node和express搭建代理服务器的方法介绍

    本篇文章给大家带来的内容是关于node和express搭建代理服务器的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 本例用node和express搭建的代理服务器。,期望目标如下: 1、开启某服务a,该服务可实现…

    2025年3月7日
    200
  • vue代理模式nginx配置的介绍

    本篇文章给大家带来的内容是关于vue代理模式nginx配置的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 前端使用vue.js开发,后端使用tornado框架提供restful API, vue.js使用代理;如 当…

    编程技术 2025年3月7日
    200
  • 了解Nodejs及其运行原理

    前言 Node目前处境稍显尴尬,很多语言都已经拥有异步非阻塞的能力。阿里的思路是比较合适的,但是必须要注意,绝对不能让node做太多的业务逻辑,他只适合接收生成好的数据,然后或渲染后,或直接发送到客户端。 为什么nodejs 还可以成为主流…

    2025年3月7日
    200
  • 浅谈Nodejs获取参数的几种方法

    nodejs怎么获取请求中的参数?下面本篇文章给大家介绍一下nodejs获取参数的四种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《nodejs》 NodeJs 取参的四种方法 参考:https://m…

    2025年3月7日
    200
  • nodejs有哪些缺点

    nodejs的缺点:1、不适合CPU密集型应用;2、只支持单核CPU,不能充分利用CPU;3、可靠性低;4、开源组件库质量参差不齐,更新快,向下不兼容;5、Debug不方便,错误没有stack trace。 本教程操作环境:windows7…

    2025年3月7日
    200

发表回复

登录后才能评论