开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html' n/ h( Z* E; X+ n0 B) a( I8 s7 l

  ]# ~7 {6 y& m百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?0 N0 ]0 Z( t1 r- l6 E- _! j- v
1 z; R, ?- X% s
先说说discuz目前一些落后的地方:
& q  n) n! ?  Z7 C& K1 \1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用
$ c; [3 ?& J# Y, r: r2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。
6 j& t5 P. P# Q
( _1 Z! r4 n7 i* {% w下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
+ y$ V0 D2 A5 @; ~* ^; [+ ~+ r9 E) B
一、SSL证书&配置 % q7 a8 V( }# D; i2 {: ?
# C" q! V& X' l) B: t1 p: k
首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)
. j- r, a# m# c( b) J4 f8 G
& V- N: X/ A, {+ j' J1 u二、Discuz! 程序调整 . N0 D2 f! H4 D/ P9 z
4 \0 p9 D  D  b/ F& c) @9 i
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 ; ]& k, F$ X$ c+ y

5 }" j4 C% U3 l7 {Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。 ) h, H8 E' m' g
0 N# Z) |0 Z1 R, `
1、打开source/class/discuz/discuz_application.php(约第187行处):查找: ( g" y4 V/ D( e  C1 {. x

& K& @" i% d, S9 r# k/ S$ U. M8 J5 ~
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      5 {% g" T0 w( y& c1 K7 D% x! L# ]
    2. 复制代码
    复制代码

    / ?7 @  q! i6 x; G% E0 L! S. S# c( n
9 x7 Z1 q- z3 b& n

1 z& G* F' ^0 B# M5 L2 u6 K7 p0 Y3 p5 T
: [. _. b; N' ?4 b修改为: 3 Y) s6 D& j5 g& ~1 K! x  B
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;: A  g2 ^* ~" _- Z
    2. 复制代码
    复制代码
    ) U5 Q3 b1 f6 @7 }) L; R

1 F5 J0 I- G$ ]6 F& }
: h- }7 N0 A3 y8 Y6 w
* K- `* e/ Q6 ~' \
8 @3 j3 q! w7 l
2、打开uc_server/avatar.php(约第13行处): 查找: 7 _% o% j. O/ a; Q

6 b- a. H0 l5 n  U; i6 m" E
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
    ! F% H- X! p. x
3 p; C7 s8 r8 g) ~
[color=rgb(51, 102, 153) !important]复制代码
& y8 A4 ~: U6 ?2 ?4 j' k
, R& u3 F2 r' r) r$ _; P9 M6 P9 |
; c' h9 R, v7 r$ a1 }" {4 Q
修改为:
+ [8 o  Q2 e1 m% N9 _) n2 D0 h# O( T3 I1 H

  • " x  F: `& }% Y& G! y  n( Z
* E5 _4 x( d& [  [. Z# P. |
  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'], '/'))));
复制代码

8 S  R4 `) [% b! J% F% ^8 R

0 D& [' J& b( t% k6 ^; v+ l/ w
( e2 h* I( I7 U! r0 Z' t$ X7 a0 B: j' n# r! n: M
修改过后,更新缓存,发现大多数链接都变成了https。
1 \5 u/ @. B' P4 [( T+ T* {& ~4 a1 p3 I2 t/ r- \. q
三、后台设置 1 `6 e- e5 ]- b5 i

: G* o! u# w( V/ K- P在后台还有一些设置,可能会干扰https的使用 * A% Y( y2 v' n. }
5 h7 y+ J/ R' |9 B9 {9 {) r$ o9 [
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
% Z( \$ D& v' S- E9 d2 O' C  q1 i; F4 l% l
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
% P) N4 Z$ Q8 e- ]5 G$ x" v
- i0 r( \9 d- N  S' H0 G, P另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。 . N- R7 n6 z; z. v3 }% ]) ^' J
2 Q1 P$ r5 m0 O; a$ x8 J4 g
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。 % V. g+ @" p. t! {9 m- D: `
* `; ~4 F" W! ^
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。' q& l: ^: D6 A, N2 `! m
, ^. `. A9 n4 F- ]) S
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。2 ~9 O* {4 _  ]# B# H; q) S; S, C5 X
8 M& F* p1 W+ @/ u2 f
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。% \% y( {" y; f' m' T


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

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

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

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

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