Nginx换用Caddy

由于无聊买的50vz的NAT OVZ机器被TCP阻断,也是研究怎么通过UDP来瞎搞,但是发现V2Ray w/ mKCP会有断流的情况,虽然我极度怀疑是运营商搞的鬼,但一搜却发现有人做内网测试也是会断流……即使我升级到最新的4.2也然并卵,不过这个过程中我发现有人用Caddy搭建ws代理……于是手痒的我也把Nginx换成Caddy。

现在大概记一下,
首先是去 Caddy获取一句话安装命令,大概类似这样:

然后在shell里面执行即可,简单的通过执行 caddy -version 就能看是否装上了;
之后根据各类教程和官方文档,建两个必须的目录:

写了一个很简单的配置,大概如下:

之后安装systemctl控制脚本:

最后打开WP,登陆后台,发现古腾堡(Gutenberg)插件有报错:

一番搜索后找到解决方法,将Caddy官方建议配置中的:

换成

就可以了。

最后,既然是HTTPS站点,就顺便跑了一下SSL Labs的测试,发现评分只有A,于是又搜了一下,找到Caddy社区的一篇问答解决,评分上到A+,只需要在站点配置里面加一句:

这篇就是用古腾堡写的,感觉还是不太习惯用可视化编辑器,虽然说比自己写各种标签方便很多,但是还是觉得……少了点啥……哈哈😂

Update: May 10th, 2019

鉴于我自己设置了BWH的季付GIA机器到期不续费然后没有及时备份配置,所以突然间梯子就坏了……哈哈……真是尴尬

不过因为前阵子BWH补货入了一台年付GIA的机器正好派上用场,上次在老机器上搭的WS+v2ray的方式,这次也依样画葫芦,但是发现,用root排错完成后能运行的Caddy,通过systemctl就不行了,我当然想到了是1024端口以下的权限问题,但是为什么要专门Update一下呢?因为这个设置比较隐蔽……

把下面两句配置前的「分号」去掉后保存,再启动Caddy就可以顺利绑定1024以下端口了。

之所以不专门Po个文,主要是为了隐蔽……

——————–
引用参考/Reference:

  1. 怡红院落:  使用 CADDY 代替 NGINX
  2. NightFarmer’s Blog:  使用新一代的Web服务器Caddy代替Nginx
  3. Diamond-Blog:  使用 Caddy 替代 Nginx,全站升级 https,配置更加简单
  4. Gutenberg@Github:  issue #8802 
  5. Caddy FORUM:  Anyone archived A+ rating on SSL Labs? 
  6. 扉启博客:  v2ray抗封锁最优配置
  7. V2Ray 配置指南: WebSocket+TLS+Web

NGINX 301跳转所有非IP访问至HTTPS

前几天入了个Vultr的$2.5方案用来放这个博客,然后看着每个站点的配置里面都要写一个443端口和一个80端口共两个server{}段,其中80只是用来做301跳转,显得有点,不是那么完美。

出于对NGINX的不太熟练,我研究了一个下午,突然在蹲坑的时候灵机一动,就给解决了,为了不让这个灵机跟着米田共一起冲走,我还是记下来比较好。

上配置:

这是个默认站点(80 default)配置,访问IP和任何不存在的站点,NGINX都会转向这个默认站点。

这个配置解决了这么三个问题:

  1. 如果访问的是IP地址,那么作为默认站点,显示的是 /usr/share/nginx/html/index.html ,我的是 Hello, World!
  2. 如果访问的是任意HTTP站点,就会强制带参数301跳转到同域HTTPS站点上,而且是个万能跳转器,谁把域名做个CNAME到我的IP都会跳。
  3. 每个站点的配置文件,只需要写一段443的server{},不用额外写跳转的站点。

如果认为上面第2条看起来不太安全,或者不太爽,那也可以稍微改一下。
把配置里面的

改成

Nginx就只会跳转到配置里面有的域名,没有的域名如果绑了你的IP,访问的是默认站点,不跳转。

BTW,
吐槽一下,Debian 8自带源也是不靠谱,默认编译的Nginx不带HTTP2,为了SSL Labs的A+评级,我只能用Nginx官方源的包……

-EOF-

一句话服务器

最近调试VPS需要转移文件,又不想特别去安装HTTP/FTP服务软件,于是找来了这些命令,一行可以启动一个HTTP/FTP服务器,Ctrl-C中止后服务器即停止,简单明了很方便。

1. Python

执行命令:

[YourPort] 修改为端口号即可,如80,8080等,执行命令时是把当前目录作为webroot同时支持目录遍历,貌似也没有多的参数了。

2. PHP

执行命令(PHP5.4.0+):

参数 -S 后面为监听的IP及端口, -t 后面为webroot路径,支持解析PHP脚本,不支持目录遍历,访问的时候需要同时包含完整路径。

3. Ruby

执行命令:

参数 -ehttpd 后为webroot路径, -p 后为监听端口,支持目录遍历,貌似没什么特别的功能。

4. Python/FTP

执行命令:

参数 -p 后为监听端口。这个命令运行的是一个FTP服务器,匿名登录。

-EOF-
——————–
引用参考:

  1. [渗透技巧] 一句话开启简单的服务器
  2. PHP Manual

小内存优化VPS的LNMP及fail2ban配置

哈,大家好,21经过长时间的“沉没”,在这个寒冷的冬日怎么着也该冒泡泡以表无恙呀~ 话说,今天是二四节气中的“大雪”,够不上下雪条件的昆明便下起了稀里哗啦的雨,让21这个电动车男给冻的 …… 无法用言语形容的呀~

经过近半年时间,21手上开始掌握了一些廉价的VPS进行个人学习和实验,基本配置小至128M OpenVZ大至512M Xen都有,当然,买来以后闲置的时间稍微占多了点,不过由于Hawkhost空间12.6到期的刺激,我把Mr. 2175%都搬迁到其中一个512M Xen VPS上并且进行了相关的配置。本着内存能少用就少用、资源能节约就节约的原则,我进行了一些学习和模仿。

文中涉及到的操作基本上都需要root权限,且,21个人喜欢nano编辑器,如果你喜欢vi,稍微换一下命令就行。

基础调配部分及LNMP

由于21喜欢用Debian,于是参考了VPSee的文章《64MB VPS 上优化 Debian 5》和LowEndBox的《Bootstraping WordPress/Nginx/PHP/MySQL on a Cheap VPS with lowendscript》,对VPS上的OpenSSH、 syslog-ng用Dropbear和inetutils-syslogd进行了替换,从基础上对资源占用进行了控制,大概操作如下:

    OpenSSH、 syslog-ng的替换,我使用了LEB的lowendscript,在root用户下,如此操作便可:

    如果你参考这里,会发现LEB的这个脚本其实还可以安装LNMP里面的NMP(Nginx, MySQL, PHP)三个组件,但是我个人比较喜欢国人的LNMP,于是仅使用LES脚本进行了系统组件的替换。

之后,我安装LNMP 0.5(请参考这里)作为WEB服务器,并且进行了一些调整,这个调整请按照自己的需求就好。

  1. 将Nginx的子线程调整为2个,方法如下:

    找到worker_processes,将其改成下面的样子:

    然后按Ctrl+O保存,按Ctrl+X退出。
  2. 同时,我将PHP-FPM的子线程也调整为2个,方法如下:

    按Ctrl+W搜索max_children,改成下面这样的格式:

    然后按Ctrl+O保存,按Ctrl+X退出。再来重启nginx和php-fpm:
  3. 关于这个……MYSQL的调优,这个……21表示个人水平不足,就不献丑了。

Fail2Ban调配部分

这是一些比较基础的安全方面的调配。

  1. 首先,是禁用root用户的ssh登录,由于我们已经用Dropbear替换了OpenSSH,所以跟一般教程针对OpenSSH的修改方式不太一样,大概方法如下:

    然后把其中的server_args修改为如下样子

    让 /etc/xinetd.d/dropbear 配置文件看起来像这样

    然后按Ctrl+O保存,按Ctrl+X退出。
    -g的意思就是禁用root使用密码登录,但可以用公钥登录(public key)(请参考这里)。
    然后重启Dropbear:
  2. 禁用了root账户登录,但是21在某些特定的没有公钥情况下又需要登录SSH,怎么办呢?增加一个普通用户就好了,这个用户不用具备什么特殊权限,只要能登录SSH足矣,大概操作如下:

    [username]替换为你想要的用户ID(注:不能为纯数字),[password]替换为想要的密码便可。
    之后我们以[username]登录系统,然后输入su root,再输入root密码便可以切换到root用户的shell。
    推荐不要使用太简单的ID,比如a/ab/abc什么的,为什么?后面告诉你。

Continue reading 小内存优化VPS的LNMP及fail2ban配置

解决SSH断线后的会话恢复

最近从vpsee\酷胖等博客看到的信息,购买了好几个廉价的VPS在学习,于是就产生了不少基于SSH的困扰,而掉线重连的会话丢失算是一个 ……

感谢GG大神的帮助,我找到了这个工具:screen
简单的说,就是这个工具会接管你当前的console会话,然后当前控制台显示的输入/输出就由它负责,如果你掉线后,只要重新启用screen,就是恢复到之前的状态。大概的操作流程如下:

  1. 以SSH的方式连接你的服务器
  2. 安装Screen;
    debian/ubuntu: apt-get install screen
    fedora/centos: yum install screen
  3. 输入screen接管当前会话;
  4. 进行自己需要的任何操作;
  5. SSH掉线;
  6. 重连SSH并输入screen -r恢复会话;
  7. 可以在.bash_profile里加一行
    alias r=’screen -d screen -ls |grep Attached|cut -f2|cut -f1 -d".";screen -r screen -ls |grep Detached|cut -f2|cut -f1 -d"."
    能够方便的切回screen窗口(假设只开了一个screen)。

恩,不是啥复杂的东西,但是能解决不小的困扰。

内容引用参考:
雨中的高速公路 – 《在ssh终端下如何解决断线带来的困扰》。

自制RHEL5 DVD安装盘

最近在学习Red Hat方面的管理,一般来说我们比较容易获取的是RHEL(Red Hat Enterprise Linux)的CD版介质(比如国内的Lupaworld镜像),不过一共6CD安装起来的替换也是很麻烦,我找到一个教程与大家共享。

文章来源:Mind Download
本教程是基于Linux shell的操作,Unix-like通用,Windows请看文后简述。

一、首先下载6张CD,(借用lupaworld)

32位安装盘
rhel-server-5.3-i386-disc1.iso
rhel-server-5.3-i386-disc2.iso
rhel-server-5.3-i386-disc3.iso
rhel-server-5.3-i386-disc4.iso
rhel-server-5.3-i386-disc5.iso
64位安装盘
rhel-server-5.3-x86_64-disc1.iso
rhel-server-5.3-x86_64-disc2.iso
rhel-server-5.3-x86_64-disc3.iso
rhel-server-5.3-x86_64-disc4.iso
rhel-server-5.3-x86_64-disc5.iso
rhel-server-5.3-x86_64-disc6.iso

二、建立6个临时目录,同时挂载6个ISO文件。

三、修改相关的光盘配置文件

编辑复制过来的当前目录的.discinfo文件(nano .discinfogedit .discinfo),效果如下(不一定完全一样):

1170972087.594754
Red Hat Enterprise Linux Client 5
i386
1,2,3,4,5,6 <-主要是修改这里的1为现在的1,2,3,4,5,6
Client/
VT/
Workstation/

四、合并6个CD镜像并写入新的配置文件,生成DVD ISO镜像,红色的是卷标名称,请自定义。

五、扫尾工作

六、Windows怎么办?
呃,实际上我没有试过,但是我推断,只要把所有的ISO解压后复制到同一目录下(可覆盖同名文件),然后编辑.discinfo文件(如第三步那样),然后用WinISO或者UltraISO创建一个DVD文件,引导文件使用文件目录下的“isolinux/isolinux.bin”文件,并删除“isolinux/boot.cat”文件,然后保存ISO,应该可以,不过,建议尽量使用linux。

七、其它
实际上,RedHat官方就提供了DVD文件,只要注册一个RHN试用30天的帐户就可以下载,这个仅供大家参考。
同时,原作者提供了一个bash脚本用来处理这个过程,只要跟几个镜像放在同一目录下执行就是,文件内容如下: Continue reading 自制RHEL5 DVD安装盘

虚拟主机答疑之「域名转移」

前言

实际上「域名转移」跟虚拟主机之间的关系不是必然的,不过既然有这个系列,就凑合到一块儿一起写吧,基本上这也属于这次大家自发的「网络移民行动」的一部分,所以,就概括来讲了,基本上还是一些基于原理的东西,可能絮絮叨叨的大家也烦,不过所谓一通百通嘛,中国教育在这方面确实可以,比较重视基础科学。不罗嗦了,开始。

现在国内形势紧张,加上前几天51.comit168.comblogbus.com的域名相继被服务商新网互联以“存在低俗内容”的理由进行了ClientHold[1],导致一段时间不能访问,甚至Blogbus.com时至今日还不能使用,可见我们这些野蛮的域名服务商手段之低俗!将域名转移外迁刻不容缓[2]

文章目录:

  • 负、 前言
  • 一、 答疑
  • 二、 域名转移流程
  • 三、 额外说明
    1. 你的权利
    2. 关于风险
    3. 关于费用
    4. 关于时间
    5. 关于转移时效性
    6. 延伸阅读
  • Continue reading 虚拟主机答疑之「域名转移」

    ---------------------------------------
    1. 意思是:注册商留置,该状态由注册商设置,域名可以续费,但不能正常使用。 []
    2. 我曾在《关于域名注册的建议》里面提出了相关的建议和解决办法 []

    服务器监测和实时SMS警报的思路

    一直以来,
    我手下的一台运行着ASP应用的Win2000服务器总是访问数据库会莫名其妙锁死,
    然后用户端访问的页面就提示:数据库查询错误,编码AXXX
    最终分析下来的原因是ASP程序本身的问题,所以每次都要人工去执行iisreset释放,

    而我又不会ASP且开发方对这个缺陷的改进意见总是支支吾吾的,
    每次出故障都是同事打电话过来提醒然后我再连接上服务器去执行重置,因为我不太用那个东西……
    但老这样,领导也渐渐开始有点意见了,所以,需要一个能及时报警并自动解决IIS重置的方案。

    最理想的状态是基本满足以下需求:

    1. 实时报警,宕机与恢复时通过MAIL/SMS/CALL等时效性较高的手段通知;
    2. 自动恢复,在发出警报的同时能执行一些额外的命令操作,以达到自动恢复的功能;
    3. 字词检测,能通过实时的页面关键字词的监测达到判断业务系统的正常性;
    4. 费用低廉,最好是免费了,不能免费的话,再说吧……

    其中至关重要的就是状态监测这一块的,
    因为是内网业务系统,无法通过站长保姆这类第三方的Uptime Monitor来监视,只能自己选择可靠的同机房其它服务器进行监测,并且为了排除线路故障外的原因,本机也要监测,同时兼顾到另一个工作现场的使用和线路故障检测,也需要上一个监测点。
    总的来说就是三个监测点:服务器本机、机房旁路、远端现场;

    最终我在chinaz里面用monitor为关键词找到了一个软件:A1Monitor
    从官方网站看来,最新版的A1Monitor 2009支持有以下特性:

    1. Vista兼容性,已经完成了对Vista的测试和工作兼容检查;
    2. 没有任何限制免费试用45天(如果企业对正版化有要求,建议购买,$89.95);
    3. 可以监视任何TCP/IP服务器或网页(通过http, https, pop3, smtp, ftp, 或者任何你需要监视的端口);
    4. 支持通过关键字来判断任何网页的正常与否;
    5. 你可以在服务器状态监测失败的时候收到邮件、同时A1Monitor还可以重启服务器或者执行一些附加的命令;
    6. 可以PING任何IP地址
    7. 每次有效的监测状态都会自动生成HTML格式的监测报告

    事实上,除了VISTA兼容性之外,
    我在chinaz找到的A1Monitor 2007特别版具备以上所有功能并且在我的2000/XP上工作非常良好,
    如果你有这方面的需要,可以去down.chinaz.com搜索A1Monitor:mrgreen:

    基本上,
    需求列表里面的自动恢复字词检测使用A1Monitor就可以解决,那实时报警呢?

    这个时候我想起了通过飞信,因为飞信可以给机主和好友发短信并且免费,那么自己给自己发警报SMS是可行的,
    通过Google我找到这篇文章,里面提到了几种发送短信的方式,免费方案就是利用fetion了,

    于是乎我从里面选择了网页命令行的方式,该方式貌似通过Fetion API这个Google App项目开发的,
    然后我构造了通过Fetion API发送警报的方式,因为可以在链接后面构造参数直接提交接收人和内容,格式如下:

    调用的方式就是

    缺点就是会打开一个IE窗口,并且不会自动关掉,如果要是故障频繁点,还需要人工来关大量的IE窗口。

    之后我突然以前看到过的飞信机器人
    一个可以通过CLI(Command Line Interface,命令行界面,也有称之为DOS、命令提示符)调用的飞信客户端,
    同时适用于Windows/Linux平台,还有一些开发文档,而我们需要用到的只是其中一个非常小的功能,CLI发短信
    格式如下:

    看到这儿,大多数人应该能明白了,
    既然A1Monitor允许执行额外的命令,而我的故障处理方式iisreset,并且同时执行一个飞信机器人发送短信的命令,
    那么只要随便写一个cmd文件,包含上面两条命令,然后放在磁盘方便访问机器人的地方,等着A1执行就好了。

    基本上解决方法就是这些了,并且试验过确实有效,当然,整个机房掉电的情况下就比较麻烦了,
    不过因为设置了三个监测点,3D防护,基本上可以解决服务器死机、线路故障、机房掉电等情况的近实时(0s~你设定的监测时间间隔)SMS警报,但要求监测机24×7开机。

    思路写的有点混乱,如果需要教程的话,请关注后续文章。

    Btw,
    你当然也可以用这个办法在你的电脑上监控你Web空间的Uptime,
    但问题是我想没有多少人能保持电脑24×7并且网络线路一直通常无故障的对吧,比较有难度而已。

    本文参考:
    利用飞信fetion发送短信,实现服务器报警等: http://zhouzaibao.javaeye.com/blog/378631
    fetion机器人2009版说明及下载: http://bbs.it-adv.net/viewthread.php?tid=155
    09版fetion机器人安装说明: http://bbs.it-adv.net/viewthread.php?tid=186

    Win2k自动更新重启后无法登陆

    今天中午登陆VNC,
    得知综合信息平台的Windows 2000 Server因为进行了Windows Update需要重启,
    想着正好中午没人在用,重启一下,
    结果用于检测的PING在常规时间后有回馈了,但是WEB和VNC无法访问。

    电话联系同事解决,
    物理登陆的结果是:有蓝底背景色,但是登陆窗口没有出现。
    后来尝试安全模式,可以进入的。
    联想到最后的操作是打补丁,也是开始卸载补丁。

    最后经过资料查询和比较,
    发现KB954211补丁和卡巴斯基6.0网络版客户端有冲突,
    卸载就好了,从此禁用WU,垃圾!

    居然补丁不经过兼容性测试就发布出来了,那是服务器诶!服务器知道不!
    很重要的!你们的OS卖那么贵还这么不负责任,害死人的!还全职商业开发,还闭源呢!