本来是打算买一个通配符把测试和生产环境都用上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;
    }

}

大致是这样,过程还算顺利。

标签: none

添加新评论