开启左侧

[学习借鉴] Discuz! X3.1/3.2 开启https(SSL)的方法

[复制链接] 0
回复
6231
查看
打印 上一主题 下一主题
楼主
跳转到指定楼层
发表于 2017-3-1 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
http://bbs.zb7.com/thread-534000-1-1.html
$ K* V5 H. L  ~- T6 A3 g- T$ V4 K' s# s6 l* \& m+ K2 b, _% b" d
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?5 m8 s/ ]( \5 u8 t
5 R) r$ O5 f6 S
先说说discuz目前一些落后的地方:; l# \! ?7 N' ]& |- r
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用8 w# ^; ]% ?2 x# A2 a
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。
- v7 ?! m; r% z$ [4 g" ]/ z
) Z4 p8 p, i% z& z) m. R下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
* L8 M% l5 m6 V& P4 k. x
, z- W) _$ O1 C$ _一、SSL证书&配置
+ i/ h7 n! F% \% B* Q: Z" X# n! B% A
首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)
, j' \; S  G2 O  E' d3 Y# N/ S, e. h" K% S- B% [, G: C: D& I
二、Discuz! 程序调整 ( D. Y0 D& Q# V, ?9 n
+ \9 ?( }  f1 p0 o
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。
6 ~4 L; V4 v( r; _; D$ W, y( K
0 [; i+ _5 j6 E* A+ s4 ^/ HDiscuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。 8 U' D/ M' V2 u; Q
) a0 C2 P' \, C2 B8 U$ }" f. N
1、打开source/class/discuz/discuz_application.php(约第187行处):查找: & t+ S  Q2 Q& Z( z, \8 Q# _
( J' }, V1 u# I$ f/ J
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;2 r/ i) k/ @7 t3 ?
    2. 复制代码
    复制代码

    / U2 y& [8 M: ]* }8 n

6 K/ T5 }; p  q' Z

8 R! K- H9 G0 k# C8 U, i) O! y+ {$ @! n$ a  Y% F& e) L: j# C
修改为: 0 p: S8 i8 q. v; g
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;/ \. {5 R$ y8 [7 M. N
    2. 复制代码
    复制代码
    ) W0 V+ Y7 n; `" a

3 C) i9 f/ T" c" Y
2 r0 w1 P' ^1 U0 x. v+ Z& W# t

! z/ T1 T7 }8 _4 g$ Q4 r) G: g3 z, P+ b& h) h0 ~7 g6 V- s
2、打开uc_server/avatar.php(约第13行处): 查找: 2 Q4 E2 e2 \. B7 ^9 C+ s
7 g" T( P6 B( j% W
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
    0 U( l! G( J' {0 C$ i
6 f! L% U8 _. ?) C1 j
[color=rgb(51, 102, 153) !important]复制代码

8 a0 q$ _5 N7 n) F$ L( Q# d, ]" E/ e# z- p* g$ m. G

" p+ t! u- H% j1 H' n/ d: P0 A修改为:
/ j. W. {; N, A. A
9 C$ |9 Q  u9 B: l
  • # S5 |1 q. Y$ N* j0 w7 ~

8 O7 u6 `; A7 \' k- O- k; f
  1. 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'], '/'))));
复制代码

( ?% U( T9 U- V# _3 M+ j* c8 }7 m5 r
* D' w- }7 W) @; G

6 G& b7 N  c2 p! K6 E8 ^" |3 z' V7 J  V0 _
修改过后,更新缓存,发现大多数链接都变成了https。
: @. l: }6 ~9 d/ M# g
% w4 Z$ x; \8 p三、后台设置 9 v+ C1 z$ l( ?0 f
' y* F2 i  ], h
在后台还有一些设置,可能会干扰https的使用 8 v. `8 r. Q3 ?; U5 S$ e
: H$ U; T4 W# K8 q- @
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的 " J' p8 ^9 u& G  `7 q" T
4 h, G" H: s3 l! w8 A) J* i5 Y
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头 6 z( `# h1 G, [
: G" J6 F& I3 _' L7 m
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。 7 Q8 z3 n6 H5 t
6 H7 Q* O/ N! t& S- t; ?  S; Y
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。
$ |% v; K# B) W
& s8 Z) T+ X7 t) J2 ?7 X清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。( J% H9 `- F8 Z3 o
6 @" E/ I+ i% ]! B& n+ x: ]
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
: T0 ]2 e- _8 k, w0 A5 E& Q4 V6 }2 d0 Z% @: S& c- C" F( J
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
4 O% t! A/ |, |7 L

转载请保留当前帖子的链接:https://www.beimeilife.com/thread-44296-1-1.html 谢谢

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表