告别 Coding Pages,Nginx 搞起来

Coding 又有了新的收费方式,会员制,正常免费用户可以使用 Coding Pages 自定义域名,但是访问的时候会显示 Coding Pages 5 秒,然后跳转,这是博主们万万不能接受的吧。黄金会员 199/年,暂时用不到,正好手头有一个 VPS 闲置,Nginx 搞起来。

安装 Nginx

网上都说 yum 不能安装,要添加自定义源,但是我这个主机恰好可以直接安装,很幸运,省了很多麻烦。

1
yum install nginx

配置 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
#
# HTTPS server configuration
#

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;
}
# force use https
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;
}