从阿里云拿到CA证书配置完后,域名能够成功跳转到https页面,但是由于ccs和js等静态组件是从http网站链接过来的,在https页面中无法正常加载,因此需要对nginx目配置文件进行修改,将http资源转换为https。
博主在这提供一个懒人方法,在nginx/.conf/添加一个 *.conf文件,复制以下内容。(如果你正在使用halo,用以下内容覆盖halo.conf,并根据注释做相应修改)
server {
listen 80;
server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。
rewrite ^(.*)$ https://$server_name$1 permanent; #将所有http请求通过rewrite重定向到https。
client_max_body_size 1024m;
}
# HTTPS server
server {
listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。
root html;
index index.html index.htm;
ssl_certificate /etc/nginx/conf.d/cert/4273053_zkspace.top.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key /etc/nginx/conf.d/cert/4273053_zkspace.top.key; #将domain name.key替换成您证书的密钥文件名。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
add_header Content-Security-Policy upgrade-insecure-requests; #这里这个就是处理https反向代理http时候静态资源的关键
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:端口/;
}
}
- ps:
1.localhost可填写多个,用空格分隔。
2.127.0.0.1指向服务器自身,端口值填写自己需要代理的服务端口。
3.ssl_certificate和ssl_certificate_key的路径根据实际*.pem及*.key存放路径填写。