/ nginx

Ngnix 上配置 https 证书

Ghost 安装的时候有选择自动生成 ssl 证书,安装时选择开启你什么都不用做站点就自动配置好 https 了。你最多只需要把 80 端口重定向一下。这次我尝试了一下手动配置。

申请并下载证书

这个阿里云或者腾讯云上都有免费的单域名证书可以申请。

Nginx 配置

以配置腾讯云的证书为例:

server {
    listen 443;
    server_name www.domain.com;
    ssl on;
    ssl_certificate /xxx/xxx.crt;
    ssl_certificate_key /xxx/xxx.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:port;        
    }
}
server {
    listen 443 default_server;
    server_name _;
    ssl_certificate /xxx/xxx.crt;
    ssl_certificate_key /xxx/xxx.key;
    ssl on;
    return 404;
}

server {
    listen 80;
    listen [::]:80;
    server_name www.domain.com;
    rewrite ^ https://$server_name$request_uri? permanent;

}

修改完配置文件之后重启 nginx 生效。

nginx -t
nginx -s reload

注意

按照官方的文档差不多就是这样子配。适当的地方自己按照实际情况再做修改。
如果按照文档配置好重启 nginx 报错,根据报错信息排查是不是路径写错或者少些一个分号之类的问题。如果报其他错误,比如说这样的报错:

[emerg] 21482#0: PEM_read_bio_X509_AUX("/usr/local/nginx/conf/ssl.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

不要怀疑自己的姿势,重新上传一下证书再试一下。

参考