千家信息网

怎么为Node.js程序配置使用Nginx服务器

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,今天小编给大家分享一下怎么为Node.js程序配置使用Nginx服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所
千家信息网最后更新 2025年02月02日怎么为Node.js程序配置使用Nginx服务器

今天小编给大家分享一下怎么为Node.js程序配置使用Nginx服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

node.js是一个基于chrome javascript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。node.js 使用事件驱动, 非阻塞i/o 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用,如实时聊天等等。然而对于gzip编码,静态文件,http缓存,ssl处理,负载平衡和反向代理等,都可以通过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\n'); }).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服务器"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

服务器 服务 端口 网站 程序 配置 知识 篇文章 缓存 代理 内容 更多 处理 域名 多个 实时 机子 流量 速度 静态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 和网络安全有关的教室班训 无忧网络技术推荐咨询 阿克苏软件开发大概费用 软件开发一个app多少钱 为什么互联网科技这么难用 数据库无穷的符号表示什么意思 网警进入高校网络安全 数据库两行数据列填充 马鞍山安卓软件开发公司 浪潮校园软件开发招聘笔试题 学生会网络技术部的职责 机电学院网络技术怎么样 山东大数据软件开发报价 如何让数据库加上sa账户 服务器正在进行旧版模组 linux查看服务器是几c 服务器跑代码跑一会就停了 梦幻手游天秤座服务器 网络技术知识基础 娱乐软件开发创业计划书 世界互联网科技前十 达州网络技术服务 服务器数据库版本信息 越秀靠谱服务器运维服务 手机网络安全证书在哪允许 软件开发流程详细教程 关于中国网络技术发展的作文 服务器日志管理系统 大学生软件开发策划书模板 开源网络安全项目管理系统
0