Graent.Hu 的博客

新浪微薄腾讯微薄

最新碎语:最近感觉有些迷茫,怎么办~

您的位置:Graent.Hu 的博客 >Linux/Windows> 绿了:本博启用HTTPS了,各位链接小伙伴记得更换奥

绿了:本博启用HTTPS了,各位链接小伙伴记得更换奥

201607071628442833.gif

        折腾了几天,从腾讯云搬到阿里云,从windows换成linux,从http有换到https....

        其实都不是什么复杂的事情只是其中踩了不少坑....

        比如:1,换linux的时候因为担心浪费时间就用了集成的环境来安装,选择的是centOS安装了wdcp的带界面的集成安装脚本,其中就遇到一个问题,因为习惯性的给服务器安装安全软件,所以安装完wdcp v32之后就安装了云锁,后面才安装的多版本的php,但是问题就来了,怎么安装都提示env:cc permission denied. 尝试了几次怎么也无法安装成功,期间也通过wdcp面板关闭了云锁服务,但是依旧无法正常安装,一通的百度,发现wdcp面板停止云锁并没有让它真正的失效,所以就kill并关闭了自启,再次尝试,安装果然成功了,这点之后还是要注意些,云锁此类的软件自我保护能力还是蛮强的。

        2,更换http到https的过程中也遇到一些问题,证书是从腾讯云申请的,免费一年,后来用换成了 lets encrypt的证书,有效期是三个月,可以续期,因为一开始的时候使用wdcp开启https支持怎么都无法访问网站,所以就排查,以为是证书问题,所以才换,不过还是满推荐后者的,接着发现不是证书,貌似服务器的443端口怎么都无法开启,着实很奇怪,但是最终还是开起来了,这里要说,wdcp v32使用lets encrypt很方便,只需要后台站点列表点击一下就可以自己生成并下载证书,而且自动启用,但是要记得在系统设置里面设置放行端口除了80之外在加一个443,还有iptables增加443放行,如果你使用的比如阿里云或者腾讯云记得在他们的安全策略中同样的增加443放行,终于https可以访问网站了.

        3,但是,凡是都有但是,因为网站用的是emlog不能自动的支持https ,所以做了一番改动如下几处:

        ① include/lib/option.php,大约43行增加:


case 'blogurl':
        return realUrl();
        break;
         ② include/lib/function.base.php,最后增加如下代码:



    /**
     * 获取当前访问的base url
     */
    function realUrl() {
        static $real_url = NULL;
        
        if ($real_url !== NULL) {
            return $real_url;
        }
     
        $emlog_path = EMLOG_ROOT . DIRECTORY_SEPARATOR;
        $script_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
        $script_path = str_replace('\\', '/', $script_path);
        $path_element = explode('/', $script_path);
        
        $this_match = '';
        $best_match = '';
        
        $current_deep = 0;
        $max_deep = count($path_element);
        
        while($current_deep < $max_deep) {
            $this_match = $this_match . $path_element[$current_deep] . DIRECTORY_SEPARATOR;
            
            if (substr($emlog_path, strlen($this_match) * (-1)) === $this_match) {
                $best_match = $this_match;
            }
            
            $current_deep++;
        }
        
        $best_match = str_replace(DIRECTORY_SEPARATOR, '/', $best_match);
        $real_url  = $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
        $real_url .= $_SERVER["SERVER_NAME"];
        $real_url .= in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT'];
        $real_url .= $best_match;
        
        return $real_url;
    }

这里需要注意一点的是 我的服务器是nginx,$_SERVER['HTTPS']无法正常的判断,因为我用的是强制都用https ,所以我干脆把判断就换成了静态的,


$real_url  = $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
//直接改成
$real_url  = "https://";
         ③ 根目录init.php,大约39行换成:



define('DYNAMIC_BLOGURL', Option::get("blogurl"));
好了,试试看是不是可以访问了?并没有,因为模板使用的是外部引用的bootstrap资源,使用的是http所以页面一片混乱,,,,还好有了上面的教训,所以把引用链接也一起换成了 例如  "//xxxxx.xxxx...."的格式,http或者https 让他自己判断加载就好了...



至此上面的所有的都行就搞定了,希望对你有所帮助

我的微信:graent_hu

欢迎扫码加我和微信好友,有什么问题我们可以一起探讨,有什么需要也随时欢迎发消息给我~

转载请注明出处:

本文标题:绿了:本博启用HTTPS了,各位链接小伙伴记得更换奥

本文链接:https://www.wlyc.cn/post-101.html

发表评论

路人甲 表情
看不清楚?点图切换