相对于 VPN 而言, Shadowsocks 更为轻量方便,安装配置过程极其简单。而客户端也在各种平台遍地开花。感谢 @clowwindy 给我们带来一款如此好用的软件。

下面说说 Shadowsocks 的优化。请务必先将 Linux 内核升级到 3.5 或以上。

编辑 limits.conf

sudo nano /etc/security/limits.conf

加入这两行

* soft nofile 51200
* hard nofile 51200

启动 shadowsocks 之前,设置以下参数 ulimit -n 51200

先载入 tcp_hybla 模块(注意,OpenVZ 虚拟化主机这步将会出错,因为 OVZ 主机不能动内核)

sudo /sbin/modprobe tcp_hybla

 

调整内核参数

sudo nano /etc/sysctl.conf

fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

修改后执行 sudo sysctl -p 使配置生效

安装锐速

修改锐速的3个参数

nano /serverspeeder/etc/config

rsc="1" #RSC网卡驱动模式 
advinacc="1" #流量方向加速 
maxmode="1" #最大传输模式

 最后重启锐速

sudo service serverSpeeder restart

(本文假设你在使用 Debian 系操作系统,如 Debian,Ubuntu 等,本文实际操作环境为 Ubuntu 14.04.3 LTS)

安装 PHP 7

假如您曾使用过 HHVM 或者 PHP 5,您可以考虑先将其卸载

sudo apt-get purge php5*
sudo apt-get purge hhvm*

卸载过后正式开始安装

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0-fpm
sudo apt-get install php7.0-mysql
sudo apt-get install php7.0-gd
sudo apt-get install php7.0-curl
sudo apt-get install php7.0-dev
sudo apt-get install php7.0-mbstring

你以为还有很多步骤?不好意思,PHP 7 的安装到此为止了 – – 就这么简单。

重新配置 Nginx

对于 HHVM 用户,请先把 Nginx 配置中的 include hhvm.conf 去掉

然后加入以下字段

        location ~ \.php$ {
                try_files $uri =404;
                include fastcgi.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

最后的步骤

最后没啥好说的,无非就是重启 PHP-FPM 还有重载 Nginx 而已

sudo /etc/init.d/php7.0-fpm restart
sudo nginx -s reload

Enjoy!

 

开启 SSL

首先我们先启用 SSL

listen 443 ssl;
server_name www.example.com;
ssl on;
ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/www_example_com.key;

其中 example.crt 是网站证书,www_example_com.key 是证书私钥.

需要注意的是,大部分 CA 提供的证书都是多级,所以可能需要我们把多个证书合并成一个,这样可以减少浏览器额外下载中间证书的次数。

合并方法其实非常简单,使用记事本一类的文本编辑软件打开 example.crt ,然后根据 CA 提供给你的证书链,逐个打开证书,按照顺序依次粘贴到 example.crt 的末尾就可以啦。

生成并配置 dhparam.pem

$ openssl dhparam -out dhparam.pem 4096

将 dhparam.pem 配置到 Nginx

ssl_dhparam /etc/ssl/certs/dhparam.pem;

协议和 ciphers 的选择和配置

对于不在意评分和安全性的人们,这方面倒是不必要考虑这么多。

但是对于想拿 A+ 评分的来说,我们必须抛弃一些不安全的 ciphers 和协议。

这个配置中的 ciphers 支持大多数浏览器,但不支持 XP/IE6 。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_stapling on;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
ssl_prefer_server_ciphers on;

SSL Session 配置

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

HSTS 配置

这个对评分影响也比较大,但如果开启这个,需要全站开启 HTTPS 。

HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议,其作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。

采用HSTS协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。

该协议将帮助网站采用全局加密,用户看到的就是该网站的安全版本。

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

完整配置

server {
        listen 443 ssl;
        server_name www.example.com;
        ssl on;
        ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
        ssl_certificate_key /etc/ssl/private/www_example_com.key;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_stapling on;
        ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
        ssl_prefer_server_ciphers on;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
}