北美网备份站
标题:
Discuz! X3.1/3.2 开启https(SSL)的方法
[打印本页]
作者:
北美生活网
时间:
2017-3-1 12:38
标题:
Discuz! X3.1/3.2 开启https(SSL)的方法
http://bbs.zb7.com/thread-534000-1-1.html
4 c* M- ]" @. K* {* }1 S
0 v3 i# _/ V1 S
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说
discuz
! X3.1/3.2 如何开启https(SSL)?
% `. J7 M6 K" U: ~# }
2 `2 U! o9 J1 ^/ U6 j
先说说discuz目前一些落后的地方:
4 n5 l9 v _ I$ a, N( ^
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用
. M' D7 r2 [) p+ C
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。
7 \5 c( c9 p$ T- |* F3 p
/ j3 z" g5 V2 M
下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
0 a; q0 Q" J# M) Q Y! t; Q
' T3 ^% e$ s% [# S' ?
一、SSL证书&配置
" V$ Y6 ^, \/ X$ G' H) Q
/ p- e$ h5 b% l$ N3 K/ V
首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)
* c: I- z) I4 {! m
* L, p5 f2 g4 d, x
二、Discuz! 程序调整
) ?* V' u8 v. y% J" b/ R
9 T4 V7 t9 `1 v8 M; }6 U
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。
4 L, o: {$ j* I" R9 g1 b- C
/ e$ \& r3 Z8 C) f3 |1 P4 m& n
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
8 O+ H; |) d' z
6 U! ?1 M/ O3 h3 x/ a- x0 M
1、打开source/class/discuz/discuz_application.php(约第187行处):查找:
1 y' X# a/ n# _0 p; h
9 }2 Y1 M3 i5 l4 c- K( f8 Q0 x
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
H" K! T2 ~; b, o7 ?4 X4 K3 H4 }
复制代码
复制代码
& M* L& _/ U- V& E5 E* w
" g' P& C. g: a, o h; e
U6 O! }1 }" ]
, P+ ^$ t4 L$ K% ]" {
修改为:
8 F, ]5 g8 C) S
$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
; Z- y. k& @; |1 v; r
复制代码
复制代码
& q* K! ]! { b, _
3 c6 g G ^* ?! n( V/ w
+ Z) g: x) V- r
$ _) {% k4 C' ^+ S" a
+ O |. F/ b( o9 L% Q$ j
2、打开uc_server/avatar.php(约第13行处): 查找:
4 t7 q$ r" [5 v8 y! s
$ s6 K1 ^! L$ m
define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
% W7 J* J6 q, J( v9 B" `
" f) T' ?1 |/ s2 z
[color=rgb(51, 102, 153) !important]
复制代码
1 F1 S" \, m7 K7 X b, U4 S
( h, R0 D2 t4 V
9 A% `: M$ f) _; r2 P8 ]' s3 r5 @
修改为:
+ R2 k1 Y8 t d Q/ d
! z- @+ S9 f8 ^
/ W8 u) M# B, l4 Z2 o
9 Q% @4 l h9 I! @& Q
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'], '/'))));
复制代码
3 Y" w4 \5 D3 Y6 M5 `8 Y
j/ @# U, S" q
' A8 w9 y9 C% D
# H( p2 r8 j; \2 M; U
修改过后,更新缓存,发现大多数链接都变成了https。
7 w! `' P/ L0 w# B) `
2 _( M. t5 {3 {$ S
三、后台设置
: E, T# e% F( _; a/ ~
" _' h6 U% S5 c
在后台还有一些设置,可能会干扰https的使用
7 t4 a& D+ ?; |! n/ b5 y! b
1 m9 `) z- z" r; L$ H# ^: B/ C
1、后台 >
站长
> UCenter设置 > UCenter 访问地址,修改为https开头的
) m2 m2 `4 \4 \/ W5 V' V% [
! e' @( p0 m9 _* N
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
; R- l' c8 x- e: J3 u1 i5 O
" m! c8 d' T" ]0 Q( z
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。
; f8 ]; D' t( g. C+ i' X: g
1 c" U( _+ Y( h& K. L2 M% [1 c
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。
& S. n/ `; o4 t- ?% _5 U
* _+ K: m+ @- W- q; P1 y8 ~& w
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。
' x" p5 u0 Q5 U3 z
' }* `5 |& o( f2 h
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
" \1 M) x, |: A/ B7 f, ^
: B( p! H! N1 O9 i
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
# {) S$ ^# P, a) c9 j; Q2 `
欢迎光临 北美网备份站 (http://beimeilife.duckdns.org/)
Powered by Discuz! X3.2