snmoney@gmail.com 发布的文章

手贱尝试在运行frps 的主机上尝试安装BBR 修改导致系统无法重启。脑一抽 重灌了 ubuntu-18

然后才发现我在上面还跑着好几个其他应用,其中一个就是给博客转发的 frps

重新部署的时候引发大混乱
用一键部署脚本安装了 trojan (真香!) ,自带了 一个nginx。

原本以为全部流量是先渠道nginx然后做反向代理的

没想到竟然是
trojan:443 -> 反向 nginx:80

难怪在 nginx.conf 里找半天没有看到 ssl的设置,加上反向指向 frps.https 也不成功各种问题

让三个应用共享443端口可把我愁坏了。

最后的方案是

nginx:80 -> vhost反向 frp.http:非80
nginx:80 -> 默认 www
trojan: 非443 -> nginx:80
frp.https: 独占 443

终于不打架了,安逸。

再怀缅一下挂掉的服务: praysatoshi.top ... 我会尽快把你恢复的
最后的最后,舔多一口:trojan ...啊~真香。

纯技术研究,不深究行为目的。

运行了几个python后台守护进程,需要重启的时候不能简单 killall python 很容易会误杀其他服务
所以备忘以下的脚本

已验证有效

#!/bin/sh

function PidFind()  
{
    PIDCOUNT=`ps -ef | grep $1 | grep -v "grep" | grep -v $0 | awk '{print $2}' | wc -l`;  

    if [ ${PIDCOUNT} -gt 1 ] ; then  
        echo "There are too many process contains name[$1]"  
    elif [ ${PIDCOUNT} -le 0 ] ; then  
        echo "No such process[$1]!"  
    else  
        PID=`ps -ef | grep $1 | grep -v "grep" | grep -v ".sh" | awk '{print $2}'` ;  
        echo "Find the PID of this progress!--- process:$1 PID=[${PID}] ";  

        echo "Kill the process $1 ...";          
        kill -9  ${PID};  
        echo "kill -9 ${PID} $1 done!";  
    fi  
}
#查找并kill掉 带有 newdoc.daemon 名称的进程
PidFind newdoc.daemon

#restart daemon
/path/to/startscript/chkdaemon.sh

当搜索结果不唯一时,脚本也会拒绝执行杀进程

参考文:https://jingyan.baidu.com/article/b7001fe1a5dbc40e7382dd75.html

备忘,当对一个有唯一索引字段的表做插入操作INSERT INTO 时做遇到冲突则更新的逻辑ON DUPLICATE KEY UPDATE
想知道此时是否仍然能够获取到 操作的行的id值db.lastrowid

sql = "INSERT INTO `mTable`(`id`, `tfsn`)  " \
          "VALUES(%s, %s) " \
          "ON DUPLICATE KEY UPDATE `tfsn`=VALUES(`tfsn`);"

vals = (id, tfsn)

try:
    db.execute(sql, vals)

    new_cid = db.lastrowid
    print("tfid:", tfid) #如果触发了update 可以获得id值?

结论是,能,也可能不。
当触发update 有内容变更时,可以获得 id值;
当update的内容新旧完全一致前后没有变化的话,mysql会认为没有任何行被更新。所以返回的 id 会是0

对于没有运行错误的脚本却发生了高负载、无响应、堵塞或死循环等问题。从进程只能看到异常 php-fpm 存在。需要具体了解详情可以做一下操作

找到 php-fpm.conf 所在路径,编辑之

find / -name php-fpm.conf

查找结果: /usr/local/php/etc/php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf

查看(无则添加)slowlog 值 ,将 request_slowlog_timeout 设为 非0 (0 代表不记录慢日志)
举例如下

...
request_slowlog_timeout = 5s
slowlog = var/log/slow.log

保存,重启 php-fpm
跟踪慢日志

lnmp php-fpm restart
tail -f /usr/local/php/var/log/slow.log

日志会定位到发生运行缓慢的第几行什么命令

是的你没看错,是从https切换回http。这个开倒车的奇怪需求是由于

腾讯云直播API生成 HLS拉流地址默认是 http (尽管文档声称支持 https 但依然会触发证书与域名的不匹配,显示更难看的红色警告标签,而且同样会导致资源加载失败)
QQ截图20200520092043.jpg

控制台报警:

已拦截跨源请求:同源策略禁止读取位于 https://XXXXXX.com/live/XXXXXX.m3u8 的远程资源。(原因:CORS 请求未能成功)。
无法加载视频文件,请检查网络,以及视频文件是否允许跨域请求访问,m3u8文件是否存在

而在https协议下调用http资源这种做法,主流浏览器是被拦截禁止的,可参考
Firefox浏览器的安全说明 与截图:

QQ截图20200520085519.jpg

  • 但是!目前在移动端(微信)下暂时还可以偷鸡这样搞,直播视频依然可以正常加载。

因此我需要:

判断当前用户是PC端浏览器访问且访问的是HTTPS时跳转到HTTP,回避所有的问题!

以下是简单实现方法:




- 阅读剩余部分 -