我想为Github Pages使用自定义域,使用我自己的证书启用HTTPS(不是CloudFlare)。
根据Github Pages说明,第一部分是通过在项目根文件夹和DNS中设置CNAME来完成的,但这种方式不支持HTTPS:https://example.github.io
仅包含自定义域example.com
http://example.com
访问https://example.com
无法使用。
因此,我正在考虑使用nginx反向代理:删除CNAME文件和DNS设置,让3个链接共存,将http自定义域重定向到https 1,将https 1的请求转发到github.io
地址。
然而,结果并不完美:正确加载主页和css(在/css/main.css!中),所有链接都正常显示,但单击它们将导致301并重定向到github.io。
我的nginx版本是1.9.5,端口80的配置:
server {
listen 80;
server_name myblog.com;
return 301 https://$server_name$request_uri;
}
代表443:
server {
listen 443 ssl http2;
server_name myblog.com;
ssl_certificate /etc/nginx/ssl/orz.crt;
ssl_certificate_key /etc/nginx/ssl/orz.key;
add_header Strict-Transport-Security max-age=31536000;
location / {
proxy_pass https://example.github.io;
proxy_set_header Host example.github.io;
}
}
答案 0 :(得分:0)
通过添加2行来修复:
proxy_redirect https://example.github.io https://example.com;
proxy_redirect http://example.github.io https://example.com;
顺便说一句,如果您想在Github页面上托管Jekyll / Ghost,请确保您的帖子的永久链接在/
结束,否则将花费另外301 ...
如果在server
块上使用Jekyll,则为css文件添加服务器端推送:
add_header Link '</css/main.css>; rel=preload; as=stylesheet';