Coding 又有了新的收费方式,会员制,正常免费用户可以使用 Coding Pages 自定义域名,但是访问的时候会显示 Coding Pages 5 秒,然后跳转,这是博主们万万不能接受的吧。黄金会员 199/年,暂时用不到,正好手头有一个 VPS 闲置,Nginx 搞起来。
安装 Nginx
网上都说 yum 不能安装,要添加自定义源,但是我这个主机恰好可以直接安装,很幸运,省了很多麻烦。
配置 SSL
2017年了,全站 HTTPS 是必须的。安装 Nginx 后,在 /etc/nginx/
下面有各种配置
主要的配置文件是 nginx.conf
里面有这样一句话
1
| include /etc/nginx/conf.d/*.conf;
|
然后我就去 /etc/nginx/conf.d/
下面找了,正好有一个注释着的 ssl.conf
取消注释,修改配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
server { listen 80; listen 443 ssl http2 default_server; server_name zhangnew.com; root /usr/share/nginx/html;
ssl_certificate ./ssl/zhangnew.cer; ssl_certificate_key ./ssl/zhangnew.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
location / { if ( $scheme = http ){ return 301 https://$server_name$request_uri; } add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always; }
error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
|
这里,我同时监听了 80 和 443 端口,并且强制所有请求转发到 443 端口,也就是使用 HTTPS。
获取并自动更新 SSL 证书
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
安装:
1
| curl https://get.acme.sh | sh
|
验证域名所有权:
1
| acme.sh --issue --dns -d zhangnew.com
|
获取证书:
1
| acme.sh --renew -d zhangnew.com
|
安装证书到指定位置:
1
| acme.sh --installcert -d zhangnew.com --key-file /etc/nginx/ssl/zhangnew.key --fullchain-file /etc/nginx/ssl/zhangnew.cer --reloadcmd "service nginx force-reload"
|
证书可以自动更新,按照您之前操作的步骤。
详细文档在这里:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
附:代理 Isso
这里 Isso 使用的证书和 Nginx 的证书一样。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| server { listen 443; server_name isso.zhangnew.com; location / { proxy_pass https://localhost:8001; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } ssl_certificate ./ssl/zhangnew.cer; ssl_certificate_key ./ssl/zhangnew.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; }
|