最新nginx对nodejs服务器的http、https、ws、wss的配置

目录

软件版本

  1. Linux 的centos7系统
  2. nodejs:v8.11.1
  3. nginx: v1.12.1
  4. 服务器:(其实跟配置nginx没有什么关系) 
    短链接:使用express 
    长连接:使用websocket

话不多说上干货

静态资源配置

文件名*.conf
server{
listen 80;
listen 443 ssl;
server_name xxx.xxxx.xxx; # 域名或者localhost或者ip
client_max_body_size 200M;
ssl_certificate /**.pem;
ssl_certificate_key /**.key;
location ~ ^/(css/|fonts/|images/|js/){ # 访问静态资源
root /**/public;#静态文件路径(http://xxx.xxxx.xxx/css==访问/**/public/css下的文件)
access_log off;
expires max;
}
location ~ .*\.(gif|jpg|jpeg|png)$ # 缓存
{
expires 30d;
}
location / { # 访问静态网页
root /root/project/**; # 静态网页的路径
index index.php index.html index.html;
}
}

注: 
server_name:域名or localhost or IP

  • 域名:用户可以直接在浏览器地址访问http://域名/(默认80端口)or https://域名/(默认443)
  • localhost and IP:用户可以直接在浏览器地址访问http://公网IP/(默认80端口)or https://公网IP/(默认443)

listen 443 ssl:设置https访问模式

ssl_certificate /*.pem :https的安全证书的pem文件

ssl_certificate_key /*.key :https的安全证书的key文件(因为我用的是阿里云服务器,所以这两个文件是从阿里云管理平台申请的证书,申请时间挺快的)

反向代理配置

因为我主要用于一个小型的nodejs服务器,所以登录用短链接,游戏中用长连接实现
文件名*.conf

    upstream ws{#长连接服务器 负载均衡
server 127.0.0.1:6080;#游戏服务器1
server 127.0.0.1:6081;#游戏服务器2
server 127.0.0.1:6082;#游戏服务器3
server 127.0.0.1:6083;#游戏服务器4
server 127.0.0.1:6084;
...
keepalive 3000;
}
server{//短连接
listen 0.0.0.0:80;
listen 443 ssl;
server_name xx.xxxxx.xxx; # 同上
ssl_certificate /etc/nginx/conf.d/*.pem;
ssl_certificate_key /etc/nginx/conf.d/*.key;
location ~ ^/(css/|fonts/|images/|js/){
root /root/project/***/public;
access_log off;
expires 10d;
}
location ~ .*\.(gif|jpg|jpeg|png)$
{
expires 30d;
}
location /{
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
client_max_body_size 10m;#传输数据的大小
proxy_pass http://127.0.0.1:6000;
}
server{#长连接
listen 80;
listen 443 ssl;
server_name xx.xxxx.xxx;
ssl_certificate /etc/nginx/conf.d/*.pem;
ssl_certificate_key /etc/nginx/conf.d/*.key;
location ~ ^/(css/|fonts/|images/|js/){
root /root/project/***/public;
access_log off;
expires 10d;
}
location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
client_max_body_size 10m;
proxy_pass http://ws;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 300s; #配置点1
proxy_read_timeout 300s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 300s; #配置点3
}
}

注: 
upstream ws :配置负载均衡,nginx会随负载均衡算法随机的把长连接请求转接到此区域中的某一个连接。(我这里主要是用于:扩充用户的长连接连接数。)

proxy_pass:代理请求路径。自己服务器端的路径。

proxy_pass http://ws:长连接负载均衡的配置

proxy_connect_timeout 300s or proxy_read_timeout 300s or proxy_send_timeout 300s:主要是配置nginx对长连接的保持时间,如果此长连接一段时间不请求任何命令后,nginx会在此时间后断开此链接。一般会在客户端设置一个心跳,在小于此时间后发起一次请求,用以保持此长连接的连接(这个是我的解决办法,不知道是否有更好的方法,欢迎提出来,学习一下)

大致到这里,你就可以远程访问你的服务器了。

nodejs简单的游戏服务器请点击 github项目地址 
nodejs实现第三方登录请点击 nodejs服务端实现微信小游戏登录

nginx对nodejs服务器的http、https、ws、wss的配置的更多相关文章

  1. 用nginx进行同一个服务器下多域名的负载均衡配置

    用nginx进行同一个服务器下多域名的负载均衡配置 Nginx进行http负载均衡的模块是upstream Upstream可以进行多个配置,这样的话可以灵活的配置站点,但是注意的是upstream后 ...

  2. reeswitch http https ws wss nginx domain default port config

    现代H5浏览器产业链越来越丰富,http+websocket+webrtc+sip组合已经是一种非常成熟的web原生音视频通讯解决方案 FreeSWITCH是一个开源的电话软交换平台,早在SIP年代就 ...

  3. Nginx做NodeJS应用负载均衡配置实例

    这篇文章主要介绍了Nginx做NodeJS应用负载均衡配置实例,本文直接给出配置实例,需要的朋友可以参考下. 负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持.负载均 ...

  4. pm2命令,端口查询,mongodb服务启动,nginx服务启动,n模块的使用,搭建nodejs服务器环境,搭建oracledb服务器环境 linux的环境搭建

    pm2命令 pm2 ls //查询pm2 启动的列表 pm2 start app.js //启动文件 pm2 restart app //重启项目 pm2 logs app //监控项目执行日志打印 ...

  5. http/https与websocket的ws/wss的关系以及通过Nginx的配置

    http/https与websocket的ws/wss的关系 - 哒哒哒 - CSDN博客 https://blog.csdn.net/Garrettzxd/article/details/81674 ...

  6. nodejs服务器部署教程四

    nodejs服务器部署最后一篇文章,部署ssl证书,升级http为https,其实网上相关教程有很多,但是略麻烦,本教程让你一切从简,5分钟搞定https,免费一年哦 申请ssl证书 免费申请的机构有 ...

  7. nodejs服务器部署教程一

    第一篇教程紧紧让你输出一个hello world 环境介绍 服务器环境:ubuntu(16.04)64位 本地环境:windows10 64位 连接工具:mobaxterm ubuntu安装和基本配置 ...

  8. NodeJS服务器:一行代码 = 一个的HTTP服务器

    从这一篇开始,我们进入技术讲解的话题,逐步实现用NodeJS实现文件的传送共享服务. 前文我们讲过,NodeJS是最擅长做网络服务器的,今天我们就来用NodeJS做一个最简单的服务器. 先看一幅图: ...

  9. NodeJS服务器退出:完成任务,优雅退出

    上一篇文章,我们通过一个简单的例子,学习了NodeJS中对客户端的请求(request)对象的解析和处理,整个文件共享的功能已经完成.但是,纵观整个过程,还有两个地方明显需要改进: 首先,不能共享完毕 ...

随机推荐

  1. 4张图看懂delphi 10生成ipa和在iPhone虚拟器上调试(教程)

    4张图看懂delphi 10生成ipa和在iPhone虚拟器上调试(教程) (2016-02-01 03:21:06) 转载▼ 标签: delphi ios delphi10 教程 编程 分类: 编程 ...

  2. Android-LoaderManager异步加载数据库数据

    LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...

  3. Eclipse使用Maven搭建Java Web项目,并直接部署Tomcat(转载)

    原文地址:http://www.cnblogs.com/hackyo/p/6527910.html 1.环境: win10 Java 1.8 Maven 3.3.9 Eclipse IDE for J ...

  4. 曲演杂坛--HASH的一点理解

    HASH,百度百科上做如下定义: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列 ...

  5. .Net Core在Middleware中解析RouteData

    在ASP.Net Core中,如果直接在Middleware中获取RouteData返回的是空值,这是因为RouterMiddleware还没执行.但有些情况下需要获取RouteData,这要怎么做呢 ...

  6. ARM 编译工具keil 和 IAR 命令行编译和下载

    目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑 ...

  7. 如使用Typescript撸Vue(Vue2 + TS +TSX+CSS module)

    Vue对TS的支持一致不太好,连Vue作者尤大也自嘲真香压错了宝.期待Vue3.0会用TS重构且会有较大改进.不过目前有一些第三方的库可以曲线优化对TS的支持.主要就介绍下过下面两个库来写Vue. 总 ...

  8. day 108 项目luffy &contenttype

     反向查询  反向查询 路飞学城项目  一.建模型 models from django.db import models from django.contrib.contenttypes.field ...

  9. python IPv6 十进制和十六进制互转

    IPv6 转 十进制: #!/usr/bin/python # -*- coding: UTF-8 -*- import re def ipv62dec(ipv6): if checkipv6(ipv ...

  10. [Dart]语法基础

    此页面向您展示如何使用每个主要Dart功能,从变量和运算符到类和库,假设您已经知道如何使用其他语言编程. 要了解有关Dart核心库的更多信息,请参阅 Dart Libraries之旅.无论何时需要有关 ...