开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html2 Q; d- G) Z( g7 p( E
3 o; }6 v. B0 _4 d- J7 v
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?
; {" E+ h2 Q2 a$ t$ Z; r! K+ C# }6 A* v
先说说discuz目前一些落后的地方:  L5 m+ w4 [! t8 [  R0 }8 p. a+ v
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用0 t/ G& e2 B( N5 s1 J/ U3 p
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。  V( ?+ I$ e( F9 l: S
$ t! b# R1 b" V0 C1 q, Z( t
下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
) N6 H& \3 K) x/ {1 c: a- [
8 d" P( J& B; K+ T一、SSL证书&配置
& k) K) t' _& p1 S1 `2 A; X* u
& e6 \( N. H* M( H$ k# r3 ?' X  |首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述) * I; I4 w4 X* O" A8 e' a! [

3 j) a3 l3 R' f3 F: ~/ D+ |% K8 q6 Y" b二、Discuz! 程序调整 / x/ ~8 W# l( U: s* |3 v  }6 ~

. P+ F2 |8 [9 `% J$ J( ^4 `, L自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 & j) O& \% E: v, w/ D: h/ t
- s" @" N. i! D; r' C* p
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
3 [1 q) Z0 a( ]! m% }- n( V& n) }, `( A1 Y0 y
1、打开source/class/discuz/discuz_application.php(约第187行处):查找: * j9 g- E  L6 G4 o5 X

" R7 E# ?* e. d0 w# `+ \% Q
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;2 `, W7 i) b4 ], V, W
    2. 复制代码
    复制代码
    / m7 D) A8 p' l- |) ~9 N1 `
5 b- r3 Y. a5 l9 N% Y7 K, s. p

* C, H" d  ~! I5 Y8 f5 c" e) w5 T7 w' O( \1 S# @
修改为: / L# w- h  a. n) N( k
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      * I$ c) @+ @- n2 c# j/ o' q5 e' g' U
    2. 复制代码
    复制代码
    6 g9 k$ T: ]+ V/ t

1 E; X; Z) \6 k' d

" ]$ M; z2 e% e8 S( T% P0 f( \% ~" h

4 y" d9 V8 O+ L! T# }3 C9 w% \9 p  D2、打开uc_server/avatar.php(约第13行处): 查找: " t3 u  K8 C. o
' z! i/ L! \4 }) D: @1 X. K- c( A
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));0 t8 R# x; G' Z/ V$ e

: V! \& a6 [# A1 U[color=rgb(51, 102, 153) !important]复制代码

7 G) K0 D4 k" G
' o/ Q/ C$ Q! V- _5 L1 h! c- z; S! I/ e/ v. D* P2 A- [
修改为:
7 u; O  i* b, q* F% {$ O' H6 p6 W- Z. U! }4 q+ r1 M! \

  • ! f) C: E/ g1 {. F/ A, |9 r
9 x: d1 [4 R6 X' V
  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'], '/'))));
复制代码

; C' R6 G& Z1 {7 b& a9 |

4 x8 f) a; ?1 L# `
5 A- u6 N8 I' a3 {/ j9 c4 M3 @5 }0 ^* W$ f. \1 W; Y( ?
修改过后,更新缓存,发现大多数链接都变成了https。 / a: R6 M+ l$ f
) ]$ \  a# z$ z% \" C2 Z" m
三、后台设置 ; A: A$ W" Q7 O$ }  b! U

1 }+ |' a; i# l; N- H# n" e在后台还有一些设置,可能会干扰https的使用 1 t! e0 z. d4 t% o% J! B) `; [3 M
( v7 e/ B* c5 m
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的 ! i9 n% B4 H5 f
8 ]! Q4 A4 `/ J
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头 7 @- e# p/ x7 K% ~" H6 I8 h
  S8 `5 F( v; p+ X2 v4 k& f* t
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。 ( T7 a! i" H5 j: `$ {+ ?

9 m/ e* E) u4 Q# {; ~% m3、清理缓存,设置完成之后,需要清理缓存,使设置生效。 - q6 s) ?8 X: ]) L# @

- l6 _; K5 \) C- _( @清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。# \; ^: f" l1 l: ^8 ]

: _+ M: M- f/ S至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
) {/ N0 o  y2 O* W" U
; R/ n+ h# |/ p: {7 q* O最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。, j* C  {6 A" J7 q# t5 C


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

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

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

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

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