手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Linux

nginx websocket proxy_pass的配置

 在nginx下配置Websocket的proxy_pass还是很方便的。几乎和默认的proxy_pass一致,只要加两行代码:

XML/HTML代码
  1. proxy_set_header Upgrade $http_upgrade;  
  2. proxy_set_header Connection $connection_upgrade;  

如果对http_upgrade和$connection_upgrade的变量有自定义,可以这样写:

XML/HTML代码
  1. map $http_upgrade $connection_upgrade {  
  2.     default upgrade;  
  3.     '' close;  
  4. }  

如果不熟悉map的用法,这里有一篇中文的说明:https://blog.51cto.com/tchuairen/2175525

至此,一个websocket 就配置好了,但偶尔你可能还是会发现ws会断开,所以最好设置一下超时时间。比如5分钟?

XML/HTML代码
  1. proxy_read_timeout 300s;  
  2. proxy_send_timeout 300s;  

毕竟网络不好的时候。。30s或者60s是真有可能会数据发出去收不到的。干脆延长一点吧。

参考:

1、https://www.xncoding.com/2018/03/12/fullstack/nginx-websocket.html

2、https://blog.51cto.com/tchuairen/2175525

 

 
 

pm2 管理 frpc 【续】

前几天发的:用pm2管理frpc ,里面直接讲的是用pm2 start  -x 来启动的。如果用yaml来启动的话,会有部分不同

原来我的配置文件是这样的:
XML/HTML代码
  1. apps:  
  2.   - name: frp #配置  
  3.     cwd: /Users/gouki/frp  
  4.     script: ./frpc  
  5.     exec_mode: fork  
  6.     # interpreter: php  
  7.     instances: 1  
  8.     args:  
  9.       - -c /Users/gouki/frp/frpc.ini  
看起来好象一点问题没有。毕竟 frpc的启动本来也就是frpc -c xxxx.ini,但如果真是这样,你会发现一直报错:
XML/HTML代码
  1. 3|frp   | open  /Users/gouki/frp/frpc.ini: no such file or directory  
嗯,这种中间有空格的参数在这里好象是不能用的。改成 -c=/Users/gouki/frp/frpc.ini ,一切恢复

OK,于是最终的代码是这样的:
XML/HTML代码
  1. apps:  
  2.   - name: frp #配置  
  3.     cwd: /Users/gouki/frp  
  4.     script: ./frpc  
  5.     exec_mode: fork  
  6.     # interpreter: php  
  7.     instances: 1  
  8.     args:  
  9.       - -c=/Users/gouki/frp/frpc.ini  
就是这样简单。但真的浪费了我不少时间。


jq的简单用法

jq是linux命令行下读取和解析JSON的好工具。只是好象不能jq xxx.json这样的用法,但没事,可以通过管道符,cat xxx.json|jq 就OK了

在这里:https://www.tuicool.com/articles/vieMN3Q有详细的教程,写的非常完整,但如果简单的使用,并不需要完整的看完,只要记得几个用法就行

来个简单的数据:{"code":1,"msg":"ok","data":{"fields":["a","b","c"],"items":[{1,2,3},{11,22,33}],"other":[{"x":1,"y":1},{"x":2,"y":2}]}}

1、获取items节点: cat xxx.json|jq ".data.items"

2、获取items下第二条数据的第二个,即22.   cat xxx.json|jq ".data.items[1][1]"

3、获取other下的所有x节点: cat xxx.json|jq ".data.other[].x"

是不是很方便?如果要自定义格式输出,还可以这样

1、将所有x节点用{"items":[]}格式输出: cat xxx.json| jq "{items: [ .data.other[].x ]}" ,

如果要看更多的用法,还是上面的网址里更详细一点。我这只是简单的用一下。。或者说是临时在服务器上测试数据,让自己看起来会比较方便一点。还有一个原因是我在服务器上用这个的最大理由。有时候JSON拿到的时候中文都是转义过的。用jq,可以直接看中文。这点比较爽

-开头的文件在linux系统下无法直接删除

 如题。如果文件是"-test.log",是的你没看错。文件名前面有一个减号。如果你直接使用:rm -test.log,会报如下错误:

XML/HTML代码
  1. rm: invalid option -- 't'  
  2. Try 'rm ./-test.log' to remove the file ‘-test.log’.  
  3. Try 'rm --help' for more information.  

毕竟。- 是有特殊意义的。那怎么删除呢?也简单:

XML/HTML代码
  1. rm -- -test.log  

文件就这样被删除了。事实上,象这种"-"(减号、负号)开头的文件。因为它自带的特殊意义(linux下命令行的参数前缀),所以你用touch\vim等命令,其实都无法创建这样的文件。不信你试试"touch -test.log"。当然,你也是可以用touch -- -test.log来创建(其他类似)

 

 

vsc 跳板机 设置

 比较简单的设置,就是利用 sshconfig 。

  1. 3、如果服务器需要通过跳板机登录(跳板机需要走本地网络代理)  
  2.   
  3. 首先配置跳板机ssh  
  4.   
  5. Host jumper  
  6.   HostName yyy.yyy.yyy.yyy # 跳板机IP,跳板机~/.ssh/authorized_keys需要配置ssh公钥  
  7.   User root  
  8.   ForwardAgent yes  
  9.   IdentityFile /Users/aslinwang/.ssh/id_ecdsa  
  10.   ProxyCommand corkscrew 127.0.0.1 12679 %h %p  
  11. 然后通过跳板机访问服务器  
  12.   
  13. Host aslin  
  14.   HostName xxx.xxx.xxx.xxx # 远程服务器IP,~/.ssh/authorized_keys需要配置ssh公钥  
  15.   User root  
  16.   ForwardAgent yes  
  17.   IdentityFile /Users/aslinwang/.ssh/id_ecdsa  
  18.   ProxyCommand ssh jumper -W %h:%p 2> /dev/null  
如果你不用 公钥,那可以尝试用sshpass (即,输密码式的登录):
XML/HTML代码
  1. Host aslin  
  2.   HostName xxx.xxx.xxx.xxx # 远程服务器IP,~/.ssh/authorized_keys需要配置ssh公钥  
  3.   User root  
  4.   ForwardAgent yes  
  5.   IdentityFile /Users/aslinwang/.ssh/id_ecdsa  
  6.   ProxyCommand sshpass -p [跳板机密码] ssh -p [跳板机端口] root@[跳板机IP] -W %h:%p 2> /dev/null  
 ------EOF----
文中的aslinwang是上述网址文章中的用户,如果是你自己的,就是/Users/用户名/,相信能找到这里的人应该都明白
 
 
 
 
 
 

Tags: vsc, sshpass