开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html
( y# H" `7 D  B8 Z" }+ C% L
8 M0 X+ Z3 M2 K1 J百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?( d4 x( t8 q6 X: q/ e* Q- Q3 v: T) t

5 n: P4 @; t3 ~) K- _: q. M" ?2 D先说说discuz目前一些落后的地方:
0 b& J' R. M% ~6 S1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用0 ?$ ]! M4 d1 S( y: T# O* c$ o
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。2 ~- Q5 M" t6 f( N3 @( v

- }4 f' P9 W/ O1 U下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
: P0 g" }; d% G2 ]. e/ b6 e8 U# E% N! t
一、SSL证书&配置 + p4 W1 D1 Z% z# P: W; t
- {5 ~, C/ P7 t: h: d' @3 S
首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)
- i8 W' |# [& H5 G8 w3 [& L: s' h
6 o4 K) p) h2 e9 L; V8 O二、Discuz! 程序调整
1 X- J8 F  [# o
/ ^7 t2 i5 y9 y& D) e- U自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 2 D4 B2 j- K8 R% h1 D; I+ j
8 w& {3 i6 E5 E0 e
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。 ; T( \4 x  D2 e/ Q# I: B5 l

- Q3 g3 _( _% ]1、打开source/class/discuz/discuz_application.php(约第187行处):查找: & \9 n: E3 H- Q8 D

* S* H: A1 l& N/ |; V0 @' W
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;, T/ |4 K- O6 ~- y2 ^
    2. 复制代码
    复制代码

    ' Z: u0 f/ z& Y8 t9 U  d8 n
, o* I& \7 u  B

/ ^* b4 P5 T3 H2 ^, C
! W: `1 Q6 H1 O' [6 ]* z/ z修改为: * l: \  P1 a8 R; g, c) O4 x4 \
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      1 Z. g: }* w% t; B
    2. 复制代码
    复制代码

    " ~. z: J; L) y1 C

8 _% p. ?; U4 ]

' K9 B9 T. T/ w/ @" R3 ]6 t/ Z+ y: A# B$ d6 f1 |& n$ F

9 ]: g8 T5 }' S& N% o2、打开uc_server/avatar.php(约第13行处): 查找: 4 x) L- T) @9 I4 ~. l* x

* l& {! x. S; T
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
    9 g: K8 ^; W" H/ b

" I& P+ M# o  W0 n& O% D[color=rgb(51, 102, 153) !important]复制代码
# K3 M2 @0 L; M" }& p( ?

5 S% b8 a% T/ H9 }& E' `
/ R" K8 H$ d5 m* S修改为: 1 K  G4 c3 I2 o, n2 W% e
& s" q2 U5 w1 Z4 {
  • 6 z0 Z. k" u, q7 k

4 a1 C5 u$ k% Q# u1 z3 S
  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'], '/'))));
复制代码

9 d0 R/ y5 c" Z
9 Q7 t7 s. a. E, t$ g! P) n& v: f

8 a/ f$ P) R/ z/ L8 Z+ b% b4 O$ n- y3 k& V; b
修改过后,更新缓存,发现大多数链接都变成了https。 " l& P8 f0 y: g1 [) k$ C: M

6 M. j+ \$ r5 P& C* i4 H8 w( F三、后台设置
0 m! k) @- x5 K# v$ F  k- c2 x
, k- L3 d: L. ?& f9 l在后台还有一些设置,可能会干扰https的使用 , [  o0 x* E7 s) G' g6 P: j7 u

* P) S  Y1 i- z# F. m1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
! A) c  u1 P& ~7 T" M
1 C8 ?( n& z' u" l2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
# _6 J' B0 O( ~1 B0 u+ ]) H- O9 p- o/ r9 `6 x* j
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。 3 g; @9 x) r& L( R
3 ]# q- g4 I& f3 Z0 ]
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。
: J+ n/ C5 z( ?; q% }
: j1 l7 A) i4 A清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。6 C3 P9 o2 \! G5 h. n6 D9 L+ n

" P1 ~: ?; z" D, y. Q至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
& {3 W7 G. x8 U1 N5 y) N. X( J2 Z1 {6 [8 ?. G
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。5 B% i; t9 M! u5 R! F) ]


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

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

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

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

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