ArvinHao

人生若只如初见,何事秋风悲画扇。

11/28
16:14
教程

全局加密

1.HSTS (HTTP Strict Transport Security)帮助网站采用全局加密
在NGINX配置文件里面把下面内容添加到server {}

add_header Strict-Transport-Security max-age=15768000;

例:

server
{
 listen 80;
 add_header Strict-Transport-Security max-age=15768000;
 server_name www.renhao.pw; #server_name end
 index index.html index.htm index.php; #index end

 2.禁用不安全算法/协议

下面内容添加到nginx配置文件ssl on下面

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#TLS是SSL的升级版
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';#这些是已经不安全的算法
ssl_prefer_server_ciphers on;#设置优先使用服务器提供的加密算法,防止Beast Attack。

例:

#------SSL BEGIN
listen 443 ssl spdy;
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/blog.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/blog.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_prefer_server_ciphers on;
#------SSL END

PS:这里面有两个问题必须说明一下
首先SSL证书一共有SSL证书文件(.crt文件)、SSL证书.key文件、SSL证书链(包含信任锚和已签名证书)文件 三个文件
一:ssl_certificate 这个文件比ssl_certificate_key里面的文件大,ssl_certificate文件=.crt()+SSL证书链文件
(顺序不能反)用notepad++编辑合并一下就行了生成一个新的文件命名为xxx.crt
二:ssl_certificate_key=.key文件
总之顺序不要弄反了,至于例子里面有个PEM文件不要在意这个后缀,.key文件也行。

3.trim 模块

trim模块是tengine才有的nginx木有,用于删除 html , 内嵌 javascript 和 css 中的注释以及重复的空白符。

trim on;
    trim_js on;
    trim_css on;

例:

 location ~ .*.php$
 {
 fastcgi_pass unix:/tmp/php-cgi-blog.sock;
 fastcgi_index index.php;
 include fcgi-host.conf;
 fastcgi_param DOCUMENT_ROOT /home/wwwroot/blog/web$subdomain;
 fastcgi_param SCRIPT_FILENAME /home/wwwroot/blog/web$subdomain$fastcgi_script_name;
 trim on;
 trim_js on;
 trim_css on;
 }

设置完后可以去ssllabs测试一下

11/27
19:33
教程

AMH nginx平滑升级为Tengine

wget http://tengine.taobao.org/download/tengine-2.0.3.tar.gz
tar -zxvf tengine-2.0.3.tar.gz
cd tengine-2.0.3
nginx -V

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_uwsgi_module --without-http_scgi_module --add-module=/usr/local/echo-nginx-module-0.42 --add-module=/usr/local/yaoweibin-ngx_http_substitutions_filter_module-e3291ac --with-http_spdy_module
make 
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old #备份nginx配置文件
cp -r objs/nginx /usr/local/nginx/sbin/nginx #拷贝相关文件(不含子文件夹)
/usr/local/nginx/sbin/nginx -t #测试Nginx是否运行正常
amh nginx reload #重启
/usr/local/nginx/sbin/nginx -v #查看当前Nginx版本(是否为Tengine)

PS:
第一步中的网址去官网获取最新版本
第五行代码会获取到之前版本的编译配置 直接COPY到下一行的./configure 后面–with-http_spdy_module(这个可选 加速HTTPS访问)