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

升级Let’s Encrypt通配符证书

喜大普奔,今天Let’s Encrypt开始支持通配符域名证书了(Wildcard,俗称野卡),第一时间升级了一下。

首先,获取acme.sh

或升级acme.sh最新版

然后申请新的证书

之后会出来,提示你设置TXT解析记录,比如我的是

那么根据提示,去DNS服务商那边,设置两个TXT记录,之后再运行

会有如下提示

按照官方教程的建议,是通过以下方式复制证书到任意其它位置,但不要直接在webserver配置里面引用 /root/.acme.sh/ 路径下的文件

之后修改Nginx的站点配置,访问站点看看证书有没有就更新就好了。
下面是我的配置,仅供参考

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

  1. acme.sh: How to install, DNS manual mode

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-

替换Google Fonts&Google Libs为中科大源

由于众所周知的原因,WordPress在使用过程中,后台及模板都会调用到Google Fonts&Google Libs的文件,如果恰逢没有科学上网工具的时候看着一直都在Loading的浏览器会觉得真是生不如死……

0. 前情提要

之前我试用过Qihoo360的Replace Google FontsReplace Google Libs插件,满心欢喜的装好就丢着不管了,直到某日骚包地发现Chrome里面大标题Mr.21是宋体……要多难看有多难看,debug了一下发现是Qihoo360的字体库压根没!有!加!载!到!

直接访问插件替换出来的URL,居然提示证书错误(HTTPS),而且两个站的证书错误提示还不一样……

此服务器无法证明它是fonts.useso.com;其安全证书来自*.yiqifa.com。出现此问题的原因可能是配置有误或您的连接被拦截了。

此服务器无法证明它是ajax.useso.com;其安全证书来自res.0kee.com。出现此问题的原因可能是配置有误或您的连接被拦截了。

yiqifa.com和0kee.com都是360名下的站点,这得有多粗糙才能做出这样的服务来啊,而且压根自己就不用的对吧!对吧!对吧?!

1. 进入主题

我焚香祭拜谷歌大神,祂给我出了个主意,让我看看中科大LUG发布的Google Fonts加速服务,一看,深得我心,走HTTPS也不会有诡异的错误提示↑,这才是良心服务商应该有的样子~

按照文中说明,我应该将下面这些前面地址换成后面的地址

fonts.googleapis.com        fonts.lug.ustc.edu.cn
ajax.googleapis.com        ajax.lug.ustc.edu.cn
themes.googleusercontent.com   google-themes.lug.ustc.edu.cn
fonts.gstatic.com          fonts-gstatic.lug.ustc.edu.cn

我试过直接修改上面提到的两个插件里面的路径,但是发现没办法用HTTPS来走,而且会有替换不了的情况……

于是,我想另辟蹊径……

2. 另辟蹊径

好吧,我又烧香了,这次我也忘了从哪里找到的,说是可以直接在Nginx的配置里面http{}段增加几个句子,从WEB服务器层面直接把输出的上面几个原始地址替换为LUG@USTC提供的加速服务,于是我照做了……

首先,需要你的Nginx有一个叫substitutions_filter_module的模块,如果没有的话,按照这里编译安装一下吧……

Tips. 如果不知道之前Nginx编译的时候带了哪些参数和模块,可以用Nginx -V查看。

然后找到你的nginx.conf,如果不知道在哪里,可以用以下命令搜索

打开它,在http{}配置段中,寻找对应},在上方增加以下配置

保存,退出,重启Nginx看看效果。

3. 后话

有个比较,嗯,不太方便的地方就是,走Web输出的相关地址,都会被替换,比如说我编辑Plugins的代码,就会发现实际上是Google Fonts的地址自动的替换成USTC的……

此例用的是LUG@USTC提供的服务,当然你也可以找谷歌大神烧香问问“Google Fonts反代”,会发现有很多公益项目都提供了,包括下面【引用参考】部分的4、5都提供这样的服务。

下次说说,Mr.21 Blog升级为HTTPS加密访问了,用的是Letsencrypt的免费证书,三个月的证书期限有点蛋疼啊……
嗯,就这样。

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

  1. LUG@USTC Google Fonts 加速服务
  2. 编译nginx的源码安装subs_filter模块
  3. nginx_substitutions_filter project
  4. 常用前端公共库CDN服务
  5. 公益项目:CDNJS 库以及 Google Fonts、Ajax 和 Gravatar 反代

启用Web服务器的IPv6支持

前几天Burst西海岸的VPS开售了,于是21一个鸡冻就入了一个最低配的,看样子貌似我是第14个客户……
由于Burst在主机配置里面提到了提供IPv6地址,于是昨天发了ticket请求设置,今早来看已经给我设了4个v6的地址,但是默认安装默认配置的Apache2并不支持IPv6的访问,于是萌生了整理一下各主流Web Server启用IPv6方式访问的设置,其实都不复杂。

21个人喜欢nano编辑器,如果你喜欢vi,稍微换一下命令就行。
如果提示

请如下操作

高快直达:1. Apache 2 / 2. Nginx / 3. Lighttpd / 4. IIS 6/7
Continue reading 启用Web服务器的IPv6支持

小内存优化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配置