分类 路由器 下的文章

路由器网站 解决端口 80 问题

在中国这个和谐和言论自由的国度, 要在路由器上建网站, 有一个很大的阻碍就是80端口不能用. 幸而443 能用, 所以可以使用https.

可是大部分的网站默认是80端口的, 所以客户直接是访问80端口的. 针对所有通过二级域名访问的, 都可以通过显示/隐身的DNS设置, 转到https 上去. 比如 你的网站是 home.tianxiaohui.com. 那么你可以在路由器设置所有的 *.tianxiaohui.com 都转到 https://home.tianxiaohui.com, 那么所有的二级域名都正常可以访问了.

那么剩下 tianxiaohui.com 这个一级域名了, 因为有非常多的人可能直接访问这个, 并且是默认80端口, 那么就需要一个中转网站, 只要tianxiaohui.com 的 IP 指向这个中转站, 这个中转站在通过301 永久重定向到 https://home.tianxiaohui.com 那么就解决了.

于是今天就找到了一个免费的空间, 只是用它来做重定向, 它就是 http://cpanel.hostinger.com.hk/order/accounts-order.

其实最后只剩下唯一一个了 http://home.tanxiaohui.com, 这个永远连接不上80端口 :(

busybox sendmail 例子

  1. 首先创建一个纯文本, 写入一下内容:

Subject: Restart due to high load
CC:tian@gmail.com
To:admin@tianxiaohui.com
From:test@tianxiaohui.com

Restart due to high load on router

  1. 发送email的命令

cat var/test/routerRestartMail.txt | sendmail -S"smtp.163.com" -au"我的163邮箱用户名" -ap"163邮箱密码" -f"发送者邮箱名@163.com"

  1. sendmail 的详细说明文档:

root@home:/opt/var/eric# sendmail
BusyBox v1.18.4 (2013-05-26 18:44:50 CST) multi-call binary.

Usage: sendmail [OPTIONS] [RECIPIENT_EMAIL]...

Read email from stdin and send it

Standard options:
-t Read additional recipients from message body
-f sender Sender (required)
-o options Various options. -oi implied, others are ignored
-i -oi synonym. implied and ignored

Busybox specific options:
-w seconds Network timeout
-H 'PROG ARGS' Run connection helper
Examples:
-H 'exec openssl s_client -quiet -tls1 -starttls smtp
-connect smtp.gmail.com:25' <email.txt
[4<username_and_passwd.txt | -au -ap]
-H 'exec openssl s_client -quiet -tls1
-connect smtp.gmail.com:465' <email.txt
[4<username_and_passwd.txt | -au -ap]
-S server[:port] Server
-au Username for AUTH LOGIN
-ap Password for AUTH LOGIN
-am Authentication method. Ignored. LOGIN is implied

Other options are silently ignored; -oi -t is implied

home.tianxiaohui.com 更换新的免费证书

之前一直使用的是startSSL的证书, 这个证书是免费的, 虽然startSSL 宣称它的证书浏览器都认, 不过发现在有些浏览器上面, 还是不认这个, 我的Android 手机上面就不认, 公司里面的IE 浏览器也不认, 所以就投靠了新的免费证书: 沃通.

沃通的免费证书很容易申请, 申请之后几分钟就可以下载了. 并且不需要注册.

替换: 因为之前已经设置过证书, 只要替换一把, 全都可以用.

负载高, 就自动重启

家里的路由器上 host blog, 有时候很不稳定, 比如说如果路由器上同时开bt 下载, 它的负载有可能会高, 有时候运行时间长了, nginx 或者 fastcgi 会使 CPU 飙升到100%.

为了保证 Blog 的稳定性, 首先在 dnsPod 上面做了 D监控, 一旦无法访问, 就微信/邮件通知. 另外路由器上每天凌晨会自动定时重启. 有时候重启真是灵丹妙药.

最近发现有时候 nginx 或者 fastcgi 进程有时候会使CPU 飙升, 导致 Blog 不能访问. 不过这些时候, 内部上网总是能保证的.

怎么解决这种偶尔的负载过高呢, 可以通过监控负载过高, 进行重启的方式进行. 于是有了下面的检测并重启的脚本.
[这里重启的是 host 这个blog 的路由器, 不是其它server 哦]

load=$(uptime | awk '{print $8}' | awk -F '.' '{print $1}')
if [ 1 -eq $load ];then
     echo 'I am going to restart'
     reboot
fi

其实这个 shell 脚本很简单, 取 uptime 命令输出的 15 分钟的CPU 负载, 一旦发现大于1, 就重启.

但是为了写这个脚本, 却经历坎坷. 其中遇到的困难有:

  1. 这个负载值是一个有 2 位小数的浮点数, 一开始想用 shell 脚本的 if 去对比, 发现根本不能比, shell 脚本不支持浮点数对比;
  2. 另外 if 那个数字的对比, 方括号和中间的数字之间必须有空格, 否则报错. [空格1 -eq $load空格].

这里为了使用整形对比, 还特地截取了其中的整形部分.

启动和关闭 路由器上的 代理

仅作以后参考之用

打开代理:

ps | grep 'python2 proxy.py' | grep -v grep || {
    echo 'Not running, then start'
    python2 /opt/local/goagent3111/local/proxy.py
    exit $?
}

关闭代理:

kill -9 `ps | awk '/python2 \/opt\/local\/goagent3111\/local\/proxy.py/{print $1}'`