CentOS7在Nginx部署HTTPS笔记
本来是打算买一个通配符把测试和生产环境都用上https
但是由于习惯了测试环境域名习惯加.t 如admin.t.example.com
导致通配符域名证书无法用在测试环境(通配符域名证书只能用申请所填写顶级域名下的二级域名)
懒得换域名,因为牵涉到好几个子项目,不管了 直接上生产环境。
这里先把遇到的坑说一下
关于阿里云CA证书->推送
如果你有些二级、三级等等的域名用了cdn的话 一定要推送 不然的话会出现ERR_SSL_VERSION_OR_CIPHER_MISMATCH等错误
我就是忘了有两个二级域名是上了cdn 然后还是首先拿来试水的 浪费了不少时间
关于微信开发
先说下公众号网页
公众平台里面有一个网页授权域名 不能填协议头
所以貌似都是直接http访问,所以要在nginx上做一个http跳https
总感觉这个应该能设置他访问的协议吧 到时再研究
然后是微信支付
如果是公众号支付的话,记得也要在授权连接目录里换成https
我就是忘了换 让生产环境有十几分钟充不了钱(生产环境调试,真TM刺激)
还好这里更改链接不需要审核 直接提交就行
关于PEM文件
因为上面也说了先用了个cdn的域名来试水 出了问题后各种怀疑
甚至怀疑阿里云给出的pem文件是不是在我的nginx上不支持
因为在nginx.conf里HTTPS的server{}范例是用server.crt和server.key的
后面才知道都可以用 详情可以到这篇文章看看
https://www.zhihu.com/question/29620953
下面我直接放nginx的配置
server {
listen 80;
server_name wechat.example.com;
#因为只有一个域名必须用https防止插小广告
if ($host ~* "^wechat.example.com$") {
rewrite ^/(.*)$ https://wechat.example.com/ permanent;
}
}
server {
listen 80;
listen 443 ssl;
server_name admin.example.com wechat.example.com app.example.com;
index index.html index.html index.php;
root /var/www/my-project;
#这个目录没有的话自己创建就行,我为了方便直接放在nginx配置目录下
ssl_certificate /etc/nginx/conf.d/cert/214753884000507.pem;
ssl_certificate_key /etc/nginx/conf.d/cert/214753884000507.key;
charset utf-8;
access_log /var/log/nginx/example.access.log main;
#access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
location /{
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/ last;
}
}
error_page 404 /404.html;
location ~ [^/]\.php(/|$){
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
大致是这样,过程还算顺利。