[转]nginx 开启websocket
1、编辑nginx.conf,在http区域内添加下面配置: map $http_upgrade $connection_upgrade { default upgrade; '' close; } map指令的作用: 该作用主要是根据客户端请求中$http_upgrade 的值,来构造改变$connection_upgrade的值,即根据变量$http_upgrade的值创建新的变量$connection_upgrade, 创建的规则就是{}里面的东西。其中的规则没有做匹配,因此使用默认的,即 $connection_upgrade 的值会一直是 upgrade。然后如果 $http_upgrade为空字符串的话, 那值会是 close。 2、虚拟主机的配置文件,在location匹配配置中添加如下内容: proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; 示例如下: upstream socket.kevin.com { hash $remote_addr consistent; server 10.0.12.108:9000; server 10.0.12.109:9000; } location / { proxy_pass http://socket.kevin.com/; proxy_set_header Host $host:$server_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }   3、Nginx代理webSocket经常中断的解决方法(也就是如何保持长连接) 现象描述:用nginx反代代理某个业务,发现平均1分钟左右,就会出现webSocket连接中断,然后查看了一下,是nginx出现的问题。 产生原因:nginx等待第一次通讯和第二次通讯的时间差,超过了它设定的最大等待时间,简单来说就是超时! 解决方法1 其实只要配置nginx.conf的对应localhost里面的这几个参数就好 proxy_connect_timeout; proxy_read_timeout; proxy_send_timeout; 解决方法2 发心跳包,原理就是在有效地再读时间内进行通讯,重新刷新再读时间 配置示例: http { server { location / { root html; index index.html index.htm; proxy_pass http://webscoket; proxy_http_version 1.1; proxy_connect_timeout 4s; #配置点1 proxy_read_timeout 60s; #配置点2,如果没效,可以考虑这个时间配置长一点 proxy_send_timeout 12s; #配置点3 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } } 关于上面配置2的解释 这个是服务器对你等待最大的时间,也就是说当你webSocket使用nginx转发的时候,用上面的配置2来说,如果60秒内没有通讯,依然是会断开的,所以,你可以按照你的需求来设定。比如说,我设置了10分钟,那么如果我10分钟内有通讯,或者10分钟内有做心跳的话,是可以保持连接不中断的,详细看个人需求 WebSocket与Socket的关系 - Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。 - WebSocket就像HTTP一样,则是一个典型的应用层协议。 总的来说:Socket是传输控制层接口,WebSocket是应用层协议。   本文转载至:https://blog.csdn.net/u011411069/article/details/98475433
thumbnail
一键DD脚本(萌咖) CentOS/Debian/Ubuntu
  一键DD Linux系统的用途 基本所有的VPS服务器商家,都会提供免费的Linux系统供安装,比如CentOS、Debian、Ubuntu等。那为什么还要使用一键DD脚本重装/更换系统呢? 商家提供的系统版本有限,可能没有自己需要的版本。 商家的系统安装有自己不想要的服务,比如国内的阿里云盾(安骑士)。 商家的系统无法安装特定软件,比如很挑内核的锐速。 以上几种情况,一键DD脚本就可以为服务器更换一个纯净的系统,帮你解决问题。 ...
OVH美西杜甫测试
黑5上手的一台机器,网络为 500Mbps。 具体位置:  美国 俄勒冈州 希尔斯伯勒 基础测试 -------------------------------------------------------------------------- CPU 型号 : Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz CPU 核心数 : 8 CPU 频率 : 4000.854 MHz 总硬盘大小 : 7372.9 GB (14.6 GB Used) 总内存大小 : 31859 MB (775 MB Used) SWAP大小 : 1021 MB (0 MB Used) 开机时长 : 0 days, 14 hour 34 min 系统负载 : 0.15, 0.03, 0.01 系统 : Debian GNU/Linux 9 架构 : x86_64 (64 Bit) 内核 : 4.11.8-041108-generic 虚拟化平台 : No Virt -------------------------------------------------------------------------- 硬盘I/O (第一次测试) : 290 MB/s 硬盘I/O (第二次测试) : 288 MB/s 硬盘I/O (第三次测试) : 305 MB/s -------------------------------------------------------------------------- 节点名称 IP地址 下载速度 延迟 CacheFly 205.234.175.175 38.8MB/s 62.435 ms Linode, Tokyo, JP ms Linode, Singapore, SG 139.162.23.4 11.0MB/s 202.753 ms Linode, London, UK 176.58.107.39 17.0MB/s 146.624 ms Linode, Frankfurt, DE 139.162.130.8 15.8MB/s 149.624 ms Linode, Fremont, CA 50.116.14.9 99.4MB/s 25.793 ms Softlayer, Dallas, TX 173.192.68.18 25.0MB/s 64.434 ms Softlayer, Seattle, WA 67.228.112.250 26.9MB/s 59.743 ms Softlayer, Frankfurt, DE 159.122.69.4 17.5MB/s 145.023 ms Softlayer, Singapore, SG 119.81.28.170 7.49MB/s 229.720 ms Softlayer, HongKong, CN 119.81.130.170 8.68MB/s 205.621 ms -------------------------------------------------------------------------- 节点名称 上传速度 下载速度…
git 设置和取消代理
设置代理: http方式: git config --global https.proxy http://127.0.0.1:1080 git config --global https.proxy https://127.0.0.1:1080 Socket5方式: git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080' 建议使用socket5 取消代理: git config --global --unset http.proxy git config --global --unset https.proxy  
OVH黑五49.9欧(法国)机器基础测试
---------------------------------------------------------------------- Superbench.sh -- https://www.oldking.net/350.html Mode : Standard Version : 1.1.6 Usage : wget -qO- git.io/superbench.sh | bash ---------------------------------------------------------------------- CPU Model : Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz CPU Cores : 8 Cores 1199.999 MHz x86_64 CPU Cache : 10240 KB OS : CentOS 7.7.1908 (64 Bit) Dedicated Kernel : 4.14.129-bbrplus Total Space : 6.9 GB / 6853.5 GB Total RAM : 811 MB / 64312 MB (7156 MB Buff) Total SWAP : 0 MB / 2043 MB Uptime : 20 days 21 hour 22 min Load Average : 0.00, 0.00, 0.00 TCP CC : bbrplus ASN & ISP : AS16276, OVH SAS Organization : OVH SAS Location : Gravelines, France / FR Region : Hauts-de-France ---------------------------------------------------------------------- I/O Speed( 1.0GB ) : 174 MB/s I/O Speed( 1.0GB ) : 172 MB/s I/O Speed( 1.0GB ) : 176 MB/s Average I/O Speed : 174.0 MB/s ---------------------------------------------------------------------- Node Name Upload Speed Download Speed Latency Speedtest.net 560.40 Mbit/s 930.90 Mbit/s 6.504 ms Fast.com 0.00 Mbit/s 208.3 Mbit/s - Beijing 5G CT 4.54 Mbit/s 29.95 Mbit/s - Nanjing 5G…
Docker 配置国内镜像源
国内的镜像源有 docker官方中国区 https://registry.docker-cn.com 网易 http://hub-mirror.c.163.com ustc http://docker.mirrors.ustc.edu.cn 阿里云 http://<你的ID>.mirror.aliyuncs.com 注意registry-mirrors千万不要用https,而是用http,否则会显示No certs for egitstry.docker.com, insecure-registries不要任何http头,否则无法通过。 通用的方法就是编辑/etc/docker/daemon.json: { "registry-mirrors": [ "http://ovfftd6p.mirror.aliyuncs.com", "http://registry.docker-cn.com", "http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "insecure-registries": [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug": true, "experimental": true }   PS: 阿里源地址为:https://cr.console.aliyun.com/cn-qingdao/mirrors 重启docker sudo systemctl restart docker   通过 docker info 来查阅当前注册的镜像源列表,验证我们配置的镜像源是否生效 sudo docker info 参考文章: 1、https://www.jianshu.com/p/405fe33b9032 2、https://www.jianshu.com/p/18bb54978bc0
thumbnail
新版可续签的Office 365开发者试用订阅!E5(附自动续订的方法)
以前的Office 365开发者试用订阅(简称E3)有效期只有一年,一年过后数据都没了。 现在微软推出的新版订阅有效时间位90天,可自动进行订阅 官方教程(手动复制打开):https://docs.microsoft.com/en-us/office/developer-program/office-365-developer-program   自动续订教程: https://blog.curlc.com/archives/687.html 1、加入Office 365开发人员计划 https://developer.microsoft.com/zh-cn/office/dev-program 2、右上角Microsoft帐户或启用Azure Active Directory的电子邮件登录 3、登录后填写国家和地区   填写基本信息 4、创建订阅 需要注意的是,这里选择的国家很重要,关系到你的onedrive数据等存储位置。比如我选择US,那么我的数据就是放在美国的微软数据中心。 下面张图中的“域名”弄错了,因该是 “域”,可随意填写 填写手机号进行验证 这样就注册好了,接下来需要对自己的账号添加许可证,不然用不了的。 5、添加许可证 点击上图的 Go to subscription ,进入后台 管理 - > 用户 -> 活跃用户 -> 点击用户名 -> 许可证和用户 ,添加好后点击应用就可以了     6、自动订阅 (保活) 待完善...... 目前仅仅使用onedrive api就能保活(前提是必须要自己创建的api key),所以使用oneindex程序就可以了。但实际上还是需要outlook api,等失效了再补上。 2020-01-21: 经测试,当调用outlook的api后的第二天就会进行续期,如果在到期前20-30天调用,那么会提前续期。 2020-02-22: 正常情况一般是在到期前20-30天微软才会续期(前提是调用api)。 如果没有调用,那么在 1 - 20 天以内调用api也会进行续期,大概在1-3天以内吧,只是现在只调一次好像也不行了,貌似有频率,达到标准后才会进行续期。 2020-02-24: 对于已过期但未删除的订阅,我测试连续调用3天后会进行续期。 自动订阅程序会在本周日(2020-03-01)之前上线。 2020-03-01: 大家稍等,马上完成了~ 23:49 刚好卡在最后10分钟完成了,因为在部署的时候遇到个奇怪的bug,所以...... 自动续订教程: https://blog.curlc.com/archives/687.html
贴吧移动版显示完整评论 – 油猴脚本
有时候手机浏览器进贴吧只能看见一个评论,剩下的都被折叠了,所以就在手机浏览器装个油猴(tampermonkey),来展开被遮住的评论(顺便屏蔽下广告)。 PS:不过也仅仅能显示出第一页的评论,第一次写,后面再更新。 链接:https://greasyfork.org/zh-CN/scripts/392569-%E8%B4%B4%E5%90%A7%E7%A7%BB%E5%8A%A8%E7%89%88%E6%98%BE%E7%A4%BA%E5%AE%8C%E6%95%B4%E8%AF%84%E8%AE%BA   优化前     优化后
Docker 容器之间通信方法
DOcker:新的联网功能允许您按容器的名称连接到容器,因此,如果您创建一个新网络,则连接到该网络的任何容器都可以通过其名称访问其他容器。: 1)创建新网络  docker network create <network-name> 2)将容器连接到网络 docker run --net=<network-name> ... 或者将已存在容器加入新的网络 docker network connect <network-name> <container-name>   3)按名称ping容器 docker exec -ti <container-name-A> ping <container-name-B> Ps:需要注意的是,如果容器没有指定名称(--name),那么就只能用id。   64 bytes from c1 (172.18.0.4): icmp_seq=1 ttl=64 time=0.137 ms 64 bytes from c1 (172.18.0.4): icmp_seq=2 ttl=64 time=0.073 ms 64 bytes from c1 (172.18.0.4): icmp_seq=3 ttl=64 time=0.074 ms 64 bytes from c1 (172.18.0.4): icmp_seq=4 ttl=64 time=0.074 ms 请参阅文档的此部分; 注意:与旧版本不同links,新网络将不会创建环境变量,也不会与其他容器共享环境变量。 此功能当前不支持别名 4)断开默认容器网络 由于容器仍然连接着默认bridge docker0,而现在我们已经不需要它,所以应该将容器与docker0的连接断开,执行以下操作: # 断开容器与docker0的连接 docker network disconnect bridge name1 docker network disconnect bridge name2 docker network 文档:https://docs.docker.com/network/ 参考文章: https://stackoverflow.com/questions/30545023/how-to-communicate-between-docker-containers-via-hostname/30550990 https://juejin.im/post/5ce26cb9f265da1bcd37aa7c
Docker 常用服务启动及常用命令
常用命令 docker inspect NAMES # 查看容器所有状态信息; docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES # 查看 容器ip 地址 docker inspect --format '{{.Name}} {{.State.Running}}' NAMES # 容器运行状态 #查看端口;(使用容器ID 或者 容器名称) docker port ID/NAMES docker cp web/dist.zip ID:/data/wwwroot/xxx/ # 复制文件 Mysql: docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 mongo: docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:latest 命令说明: -p 27017:27017 :将容器的27017 端口映射到主机的27017 端口 -v $PWD/db:/data/db :将主机中当前目录下的db挂载到容器的/data/db,作为mongo数据存储目录 - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=rootPass -net=my_network 如果没有创建这个网络可自行删除此命令 rabbitMq docker pull rabbitmq:management docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management web界面: 主机Ip:15672 默认用户名和密码都是guest 默认rabbitmq镜像是不带web端管理插件的,所以指定了镜像tag为management,表示下载包含web管理插件版本镜像,其它Tag版本可以访问DockerHub查询 创建时自定义账户密码: docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost --net=my_network -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:management