文档章节

微信小程序下nginx代理wss,实现兼容原本服务协议ws,Java版本

jack__0023
 jack__0023
发布于 2017/07/27 11:47
字数 775
阅读 249
收藏 22
点赞 1
评论 0

开始前说明

微信小程序如果使用webSocket协议的话,那么按照官网上的要求是必须使用了wss协议,使用了一个框架,但不支持wss,所以后面用nginx代理解决了这个问题,接下来上代码####

软件列表

  1. 我使用的是 nginx-1.12.1,附上下载地址http://nginx.org/,

详细的nginx教程可以看一下这位的博客 http://www.cnblogs.com/edward2013/p/5506588.html

  1. 需要有SSL证书的域名一个

  2. 我使用的是tomcat7JDK7

  3. 服务器一个(有公网IP的那种,别问我为什么强调这个。。。)

熟悉这些的直接ctrl+f搜索关键字 '全文最主要',看着一步就好了

好了开始搞事情

  1. 首先先在服务器上部署你的项目,并且测试运行起来(保证外网访问的到,通过公网IP访问) 在tomcat7上运行项目,我去掉项目名,直接是ROOT文件夹 像这样 输入图片说明 输入图片说明
  2. 在服务器上部署nginx,然后修改配置,然后测试跑起来 配置这样修改,listen是监听的端口不一定要80,如果冲突可以是别的端口 输入图片说明

然后运行起来(我是用域名绑定了公网IP,然后测试的),如图效果,证明OK

输入图片说明

###3.(熟悉的直接看着一步就好)这一步nginx配置是全文最主要的了### 输入图片说明

可能需要的是这一步的代码,没有优化的nginx


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    #nginx代理wss测试
    map $http_upgrade $connection_upgrade {  
    	default upgrade;  
    	'' close;  
    }

    upstream websocket {
	server 公网IP:9321;
    }

    server {
        listen       443 ssl;
        server_name  SSL域名;
	
	ssl on;
	# SSL 验证配置
	ssl_certificate 证书.crt;#这里的证书的别加上"",好像加上会变成绝对路径,我是直接方法nginx下的conf里面的
	ssl_certificate_key 证书.key;
	# 默认值
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_session_timeout 10m; 
	ssl_protocols TLSv1.2 TLSv1.1 TLSv1; 
	ssl_prefer_server_ciphers on; 
	ssl_session_cache shared:SSL:10m;


        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
	    proxy_pass http://websocket;#代理到上面的地址去 
	    proxy_http_version 1.1; 
	    proxy_set_header Upgrade $http_upgrade; #这个上面有配置的你可以看一下
	    proxy_set_header Connection “Upgrade”; 
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

###运行,我搞定了###

输入图片说明 输入图片说明

写的不好请多指教,只供参考而已

如果想看nginx下怎么保持webSocket长连接不被中断,可以看一下我这篇

地址: 点击跳转

© 著作权归作者所有

共有 人打赏支持
jack__0023
粉丝 9
博文 11
码字总数 6000
作品 0
深圳
程序员
nginx简单配置同时支持微信小程序https/wss协议

微信小程序需要使用https与wss能才进行连接,虽然开发模式下可以使用http与ws,但发布的时候还是需要安全协议,网上的各种配置是超多超复杂的,这里已经对nginx指定版本进行最简单的配置,可用...

dounine ⋅ 03/16 ⋅ 0

微信小程序开发实战1:通过shareTicket获取分享群的OpenGId

玩过微信小程序的都知道,如果有群排行就必然要获取群的唯一id(OpenGId)。 但是OpenGId的获取必须通过加密数据:encryptedData、加密向量iv获取,对于encryptedData的解密微信官方提供了P...

qicong88 ⋅ 05/18 ⋅ 0

Java 5 、6、 7中新特性

JDK5新特性(与1.4相比)【转】 1 循环 for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是: for (int i = 0; i < array.length; i++){ type variabl......

thinkyoung ⋅ 2014/10/14 ⋅ 0

调用腾讯优图开放平台进行人脸识别-Java调用API实现

人脸检测V3在线体验:http://123.207.12.111/xai/rest/face/index 第一步:鉴权服务技术方案 Java代码实现如下 需要的HMACSHA1代码及随机数代码...

小帅帅丶 ⋅ 2017/08/18 ⋅ 10

打造个人版微信小程序(1)——本地开发api接口调用

如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。   从今天开始,开始打造一个个人版的微信小程序,尽早上线,方便大家使用以及技术讨论。这套小程序...

u013088062 ⋅ 05/01 ⋅ 0

一大波编程视频资料赠送(亲自整理)

为了感恩大家长久以来的关注和支持,小编准备了一些福利,整理了包含前端,Java,产品经理,微信小程序,Python,网站源码,Android应用视频教程,微信公众平台开发教程及材料等资源合集大放...

祈澈姑娘 ⋅ 05/08 ⋅ 0

集成 Proxy 与 DB Mesh,Sharding-JDBC 3 将"Sharding"做到极致

嘉宾:张亮 作者:雨多田光 提起数据库中间件,我们可以很自然地联想到 OneProxy、TDSQL、Sharding-JDBC 与 MyCat 等知名项目。在众多的数据库中间件实现技术中,通常存在两种架构模式,一种...

编辑部的故事 ⋅ 05/23 ⋅ 18

RMI:Java中的分布式计算框架

RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一。其实...

qq_39521554 ⋅ 05/15 ⋅ 0

编程微刊第四期文章汇总(2018.4)

编程微刊创立也有一段时间了,在此感谢一直关注我的小伙伴们,你们的关注和支持,是我每天不断更新的动力,我每个月会总结一期微刊,方便大家的阅读。 1. 推荐文章 这个时代,抛弃你的时候,...

祈澈姑娘 ⋅ 05/04 ⋅ 0

方向选择(嵌入式 大数据 java)

嵌入式:单片机之类的 比如指纹解锁底层就是此技术,反正就是和硬件打交道。 大数据:最近很火的概念技术 有点玄玄乎乎的,前途不好定义,不过门槛也是高的,对算法之类的要求还是比较高的 ...

codingcoge ⋅ 05/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 56分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部