从网上查阅资料可知,HTTP 严格传输安全(HSTS)是一种安全功能,web 服务器通过它来告诉浏览器仅用 HTTPS 来与之通讯,而不是使用 HTTP。

而且其实现方法也是比较简单,只需要在http报文的头部增加一项Strict-Transport-Security字段就可以了。

相对于原来的将http请求通过301重定向到https相比,

HSTS 可以用来抵御 SSL 剥离攻击。SSL 剥离攻击是中间人攻击的一种,由 Moxie Marlinspike 于2009年发明。他在当年的黑帽大会上发表的题为 “New Tricks For Defeating SSL In Practice” 的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器创建HTTPS连接。它的前提是用户很少直接在地址栏输入https://,用户总是通过点击链接或3xx重定向,从HTTP页面进入HTTPS页面。所以攻击者可以在用户访问HTTP页面时替换所有https://开头的链接为http://,达到阻止HTTPS的目的。

HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。

另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。

所以在本站的nginx中也添加了这个功能,实现只需要通过在https的server{ }段里增加一项add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";即可,

- 阅读剩余部分 -

jemalloc是比glibc中的malloc高效很多的内存管理方案。

在nginx中也支持使用jemalloc进行内存管理,那更应该一试了。

一、安装jemalloc

cd /opt/soft
wget https://github.com/jemalloc/jemalloc/releases/download/4.2.1/jemalloc-4.2.1.tar.bz2 -O jemalloc-4.2.1.tar.bz2
tar -xvf jemalloc-4.2.1.tar.bz2
cd jemalloc-4.2.1
./configure
make && make install_bin install_include install_lib
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig

这样就应该安装完毕了。

二、添加jemalloc tag重新编译nginx

- 阅读剩余部分 -

由于博客从ghost转到了jekyll,很多东西需要进行优化配置。首先从网上找一个比较适合自己的模板,在github上找到了wangana这款模板,觉得挺合适,然后就clone下来开始了改造。

首先是将一些不要的功能都精简掉,同时因为这个模板原来css、font、js等等的资源都是存在本地,考虑到这个主机是托管在国外一个128MB的迷你型VPS上(还要跑个nginx),所以就将其能在国内找到CDN的资源,如jquery,bootstrap,fontawesome都从国内的公共CDN引用,然后再将主css传到七牛上,同时使用多说而不是disqus,同时找到了多说的完美https方案就用上了。

然后发现fontawesome的性能依旧不是特别理想,所以再将fontawesome换成了iconfont。所以目前博客在国内完全刷新大概需要2s,握手交换传输主页这个时间差不多是极限了。

最后再根据自己的需要增加了博客分页的功能,以后再根据需要作一下修正。

国内有个阿里云学生版主机,不过快毕业了,可能就废弃了,这个国外便宜主机就留着慢慢渣干性能。

一、nginx的配置文件(主要部分)如下:

server1.conf

server {
    listen       8189;
    server_name  127.0.0.1;
    root   /opt/nginx/html/php;
    index  index.html index.htm index.php;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
       
}

server2.conf

- 阅读剩余部分 -

从hexo到ghost又回到jekyll

还是觉得jekyll这种本地管理的方式最适合自己,不过现在不再部署到github上了,而是通过rsync直接同步到自己的服务器上,感觉这样也不错,服务器的配置自己可控可写。

Resin4配置文件发生了较大变化,分为:

app-default.xml web应用配置 cluster-default.xml 集群配置 resin.xml resin.properties 会被修改的变量

一.删除/注释resin社区版本不支持的功能

1.health: 修改resin.xml, 删除

<resin:import path="${__DIR__}/health.xml"/>  

2.LoadBalance 修改resin.xml, 删除

<web-app id="">  
   <resin:LoadBalance regexp="" cluster="app"/>  
</web-app>  

- 阅读剩余部分 -

rsync有两种常用的认证方式,一种为rsync-daemon方式,另外一种则是ssh。 在一些场合,使用rsync-daemon方式会比较缺乏灵活性,ssh方式则成为首选。但是今天实际操作的时候发现当远端服务器的ssh默认端口被修改后,rsync时找不到一个合适的方法来输入对方ssh服务端口号。 在查看官方文档后,找到一种方法,即使用-e参数。 -e参数的作用是可以使用户自由选择欲使用的shell程序来连接远端服务器,当然也可以设置成使用默认的ssh来连接,但是这样我们就可以加入ssh的参数了。 具体语句写法如下:

rsync -e 'ssh -p 1234' [email protected]:SourceFile DestFile`

- 阅读剩余部分 -