开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html
' V; x# {$ \! ?6 ~" t  n- y- }5 r8 P9 N
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?) _. [( Q9 R6 {2 g7 P
* I3 F5 s0 E# w
先说说discuz目前一些落后的地方:
; h% }* ^) ~4 n5 b0 |1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用
7 {( M, n; q( U0 p2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。
* d/ y# C2 K+ p
1 S% U5 ?# P4 ^6 ~下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
% x8 I) A, x/ `. d
3 X" Y0 d+ Q7 [) m. n! a一、SSL证书&配置 , }& e  i) g7 j( ?$ Y

) h8 T- m! b  m* E首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述) : s) Z5 Z# R/ C$ ^
0 e6 M7 D# `: P& u$ W& }, p, J
二、Discuz! 程序调整 2 n) U' w8 x5 b7 ~

* b8 D% w3 e8 O; W1 o/ g自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 7 p$ v0 E$ F# p0 u' l
9 r! N8 D3 g! ?( b- A! g
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。 - c) O( ~4 M% D% z3 a4 ~

" T& R0 W' D/ a% R) }1、打开source/class/discuz/discuz_application.php(约第187行处):查找: 3 }% ^4 G' ^/ Q: }% u

' _' P9 n! @* }0 c  H
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      6 s" M8 ~8 l: s; g. [3 @' B. y
    2. 复制代码
    复制代码

    " B' y# _4 M- p( w! V$ m/ W# T/ B/ R

1 B; O! _5 b  N& g
1 {! O3 Q* i6 R' H$ b/ D& ?5 u/ w

0 t7 A6 s+ r" W: r1 \: W修改为: % S* _  O! J, t$ d! D% X& s
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;$ O7 T* w' a1 n* J
    2. 复制代码
    复制代码
    $ ~7 W5 |2 i4 b! `3 m6 Q
" L( F! ^8 N( Q
; {9 I: D& m3 R7 ^: D
. l4 ^: c. x( _( m4 X
$ ^& r  h) D% P: _: G
2、打开uc_server/avatar.php(约第13行处): 查找: % ~1 E: k( W% q" q8 Y
. ^6 ]0 o# m% A, c$ |
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
    2 W3 b# Q( P9 z

3 z; g) V8 Y; {4 W[color=rgb(51, 102, 153) !important]复制代码
! Z0 a0 n3 ]4 J

! N) ?$ {+ j8 u, a8 N/ \" F' I7 g7 Y
修改为: # e6 ]9 {: n! N+ l$ l

% B% t% X3 `- b

  • ' j' |+ v" _  m6 e% g1 |9 C' C

" z9 z. i" `# M6 L- h
  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'], '/'))));
复制代码

" z7 x6 I6 Y3 P% g: o) U
# e, Q, ]8 I$ @: A
) F- [7 z' U! i

2 r* V' |' R( J修改过后,更新缓存,发现大多数链接都变成了https。
0 S  g5 X: B# j( H* s8 _3 J# N- {8 B8 i/ a# D8 r9 [3 q) y; P' R
三、后台设置
+ r3 u$ T9 E4 e$ u' [9 t) Q+ n: e4 K2 |6 L4 T
在后台还有一些设置,可能会干扰https的使用
  z2 Z' P/ f) c1 O: f& i% R; @/ W( K  R0 p$ u# S( E1 N! @, h% l. ?
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
* K' B. ?0 t# [& h5 X* f" T) b6 P" R, T! I
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
: ~: c. h$ n9 k5 q( L, l/ u9 E5 v6 a* P: Z( B: d, S
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。   ?+ z3 E8 f5 G$ v* E
* C& d9 @6 t3 G
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。 . \. z$ W8 Z( Z+ y  K+ H* z; |
9 Q2 ?1 r8 {% _5 Q% n8 d! R
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。. |& B' s0 D4 d9 j( I5 y, K

0 C" y. h3 c# r9 }! Y至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
- v, u% L+ m# [! y+ Z& I! j2 J  s# q9 \* W. X2 y& y/ c( H  e! V
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
/ j: L- R& I, n  J8 j( B  p

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

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

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

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

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