教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持!-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持!

妙正灰 2015-09-29 12:53:24 26176
DZ这货别看它在论坛、门户领域作威作福的,其实它很是保守,1. 对高版本 PHP 兼容不佳 2. 对 HTTPS 兼容不佳。 真是拖垮了时代的步伐啊,这里来研究一下 DZ 开启 HTTPS。


本文转载自(www.6so.so


1、SSL证书&配置


首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)




2、Discuz! 优化


2.1、程序调整


自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。


Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。


source/class/discuz/discuz_application.php(约第187行处):  


查找:

$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

修改为:

$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

uc_server/avatar.php(约第13行处):

查找:
define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

修改为:

define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

修改过后,更新缓存,发现大多数链接都变成了https。


2.2、后台设置


在后台还有一些设置,可能会干扰https的使用


后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的


UCenter后台 > 应用管理 > 应用的主URL,修改为https开头


另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。


3、清理缓存


设置完成之后,需要清理缓存,使设置生效。


清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效)


至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。只能等待Discuz进一步支持https。



缓存 网络安全 PHP 数据库
分享到
取消 提交回答
全部回答(5)
  • 小糊涂神
    2016-12-12 11:53:43
    Re教你如何给 DiscuzX3.1/3.2 开启https(SSL)支持!
    完全不行 CSS和JS 根本不是HTTPS的连接 无法加载
    0 0
  • 蓝鸢
    2016-11-04 11:55:01
    Re教你如何给 DiscuzX3.1/3.2 开启https(SSL)支持!
    会出现问题,不得不重新改回去。
    0 0
  • su旅程
    2015-11-23 11:56:32
    Re教你如何给 DiscuzX3.1/3.2 开启https(SSL)支持!
    Discuz! X3  
    0 0
  • 妙正灰
    2015-09-29 14:32:14
    回 1楼(51干警网) 的帖子
    不然呢

    -------------------------

    回 8楼(小糊涂神) 的帖子
    还是等待dz官方的原生开发吧
    0 0
  • idevcloud
    2015-09-29 13:12:35
    不错的教程,楼主试验成功了吗?

    -------------------------

    回 2楼(ivmmff) 的帖子
    问问,我好几个dz论坛。想试试。

    -------------------------

    回 4楼(ivmmff) 的帖子
    好的。我ace之前用过https现在不用了。
    0 0
添加回答
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程