使用nginx解决一台服务器中ws协议与wss协议共存问题 2017-07-09 13:29:06
2018-03-08 10:05
1711 查看
https://www.worldflying.cn/article-id-13.html
https://tieba.baidu.com/p/5213484390?red_tag=0009614627
listen 15301;
listen [::]:15301;
server_name www.worldflying.cn;
ssl on;
ssl_certificate /var/www/worldflying/www.worldflying.cn.pem;
ssl_certificate_key /var/www/worldflying/www.worldflying.cn.key;
location / {
proxy_pass http://127.0.0.1:15300;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
} 上面的配置就是我之前的那个案子的配置,意思是wss协议的端口是15301,ws协议的端口是15300,当有客户通过正确的域名与15301这个端口来连接wss协议时,就会在服务器内部反向代理到15300这个普通的ws端口去,由于在服务器内部反向代理,自然也就不存在安全问题。这样我就成功的实现了websocket服务器中,ws协议与wss协议共存的问题了。优秀解决方案推荐:商城解决方案上一篇:互联网+新风口,还不快来开发app下一篇:wordpress直接操作数据库的方法联系我们
https://tieba.baidu.com/p/5213484390?red_tag=0009614627
使用nginx解决一台服务器中ws协议与wss协议共存问题
2017-07-09 13:29:06
众所周知,nginx是一个高性能的web静态服务器,同时具有很强大的反向代理以及fastcgi功能,因此现在在web端最常用的配置方式就是ngixn处理静态元素,然后使用apache+php模块,tomcat,php-fpm等工具处理动态代码。 通常apache+php模块,tomcat直接使用反向代理的方式,而php-fpm则使用fastcgi的通信方式。但是在web通信中,还有一种使用非常流行的通信方式,那就是websocket通信,他是基于web的长链接技术,由于这个技术的出现,保证了客户端可以被动的接收来自服务器的消息。 考虑到数据安全问题,现在越来越多的网站开始使用https协议,一种将数据通过ssl加密后传输的一种技术。websocket协议也有其对应的ssl加密技术,其协议标识为wss(普通的为ws)。但是由于ws与https这两个协议配置都需要服务器的支持。由于我以前一直在使用nginx,对于在nginx下配置ssl非常熟练,但是这次的案子需要我配置wss协议。一下子我人都傻了。 下面来说说我是这么解决给wss协议配置ssl的吧。 其实说起来也没什么,而且还有点卑鄙,由于我一开始想直接在websocket服务器软件上配置ssl,但是通过实验得知,websocket服务器配置了wss,就不具备ws功能了,而目前我的另一个案子又需要使用不加密的ws通信方式,所以直接在websocket下配置的方式没有走通,后来我想到以前有通过nginx配置https协议,反向代理apache的http协议,因此我想,是否可以通过配置nginx,反向代理wss协议到ws上去呢?按照这个思路我查询了相关资料,最后居然被我给找到方法来了。server {listen 15301;
listen [::]:15301;
server_name www.worldflying.cn;
ssl on;
ssl_certificate /var/www/worldflying/www.worldflying.cn.pem;
ssl_certificate_key /var/www/worldflying/www.worldflying.cn.key;
location / {
proxy_pass http://127.0.0.1:15300;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
} 上面的配置就是我之前的那个案子的配置,意思是wss协议的端口是15301,ws协议的端口是15300,当有客户通过正确的域名与15301这个端口来连接wss协议时,就会在服务器内部反向代理到15300这个普通的ws端口去,由于在服务器内部反向代理,自然也就不存在安全问题。这样我就成功的实现了websocket服务器中,ws协议与wss协议共存的问题了。优秀解决方案推荐:商城解决方案上一篇:互联网+新风口,还不快来开发app下一篇:wordpress直接操作数据库的方法联系我们
相关文章推荐
- 解决无法使用http访问安装好nginx和ftp的图片服务器的问题
- tomcat服务器下使用nginx实现最简单的动静分离--解决css、js不加载的问题
- Mac下使用nginx反向代理服务器解决资源跨域问题
- tomcat服务器下使用nginx实现最简单的动静分离--解决css、js不加载的问题
- nginx做负载均衡时其中一台服务器挂掉宕机时响应速度慢的问题解决
- 解决emlog在nginx下伪静态不能使用问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- 还原数据库XXX 对于服务器XXX 因为数据库正在使用的问题解决
- 使用Apache 的 FTP Client获取FTP服务器上的文件列表FTP response 421 received.Server closed connection问题的解决
- 使用enterprisedt上传到ftp服务器中文文件名异常、乱码问题解决
- Android 使用JSON格式与服务器交互 中文乱码问题解决
- 解决nginx服务器访问不存在的php页面显示No input file specified.问题
- 解决”不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接“问题
- 使用Django内置Web服务器和sqlite3遇到的问题及解决方法
- 使用WAMP进行压力测试,等到TOMCAT报错发现问题,基本解决国航OA服务器慢慢死掉的问题
- 解决使用Win2003远程桌面连接服务器的时候就报超过最大连接数错误问题
- win2003服务器使用WPS的COM组件的一些问题解决方法
- nginx升级到 0.8.53 之后,使用老的配置出现duplicate MIME type "text/html"问题的解决办法
- 解决nginx服务器图片(js/背景图片)不能显示问题