开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html- F0 ?9 E  S: M! z: G3 t
. P8 ?1 y. q. Q( i2 ]
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?& g4 h9 r9 ~0 l# Z4 k
: v# x9 S0 t6 Z" v
先说说discuz目前一些落后的地方:
/ s6 T1 ]2 {9 i. T4 F1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用: {3 d3 g  `5 b3 e) ]
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。
5 B& h+ D) U" |  v/ Z2 r% i7 T1 {2 \: r% c
下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:! c- }% ]) O  M

4 M( l; w- x/ L. S& ]  g一、SSL证书&配置 ' ^) F1 s, }: _' d

# s1 ~% Z8 U" u6 O+ z$ d首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)
* y4 W7 h1 W/ |8 o/ m/ p: x9 k1 Q1 \2 W) Q: V
二、Discuz! 程序调整
' R5 H$ [2 J$ x9 s) V; u3 M0 G2 p/ l" o( O+ n
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 1 c$ J5 Y1 Z! X% I- ~% ]  c

/ L5 {* Y, R) `4 ODiscuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
* K4 `6 V$ I/ Q6 N: o- `0 v+ g" T9 ?/ U9 F+ F/ g
1、打开source/class/discuz/discuz_application.php(约第187行处):查找:
( |- F% {( d4 f- `) M3 a$ P3 @7 d' I2 n" Y. P
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;4 Y1 d: }. A; @3 w& S. x1 p3 Z
    2. 复制代码
    复制代码
    6 Y* @4 f% T+ O+ y' W2 d

4 Z( I5 L. _/ V  z
9 w5 y# g- f( r, N. ]8 B

" I7 Q: ^: d6 Q7 Q1 k1 F修改为: 6 x  d+ ^( t8 g* P! S
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;4 O8 j- t- l* a7 Q$ M
    2. 复制代码
    复制代码
    ; g! p) }, C! k* }- i0 W* r

  ?  T( t9 v- T

! z) ~0 P1 s2 m6 ~3 B" O7 {% u$ r$ C& m9 v
* A6 J( e; s) z6 J( I9 T
2、打开uc_server/avatar.php(约第13行处): 查找: 8 U; u. d2 n* r- g+ N7 Q$ ~5 c# B+ D
' z1 ^: a1 r8 f' ~! i
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));, H8 x: P, S: H  W
6 {, r  a1 z7 q6 c- q. ?2 o$ l4 i
[color=rgb(51, 102, 153) !important]复制代码

  u6 M$ o' }. k2 e' V2 C  ?7 O
% J' Y' y7 ]2 X
  D0 a, G+ I' Z8 U8 _修改为: : h  u7 n4 e3 k  [3 y
0 r8 Q( [2 i* e3 J9 V

  • , a' N- b) H6 k' b

1 e  h5 u- V) K2 L' ~* v! e# z
  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'], '/'))));
复制代码
0 H8 z, j( u& H: n) Q  G- F. D

$ h% X) V. W& v5 v2 d# J7 C5 U* i2 p; p+ ?) [0 V6 m5 O, {

; G2 d: m3 L* p) g, @修改过后,更新缓存,发现大多数链接都变成了https。 . G/ Y/ f" H' k: r& B; k
6 R* e6 F; n7 _& O3 G1 d. o) U
三、后台设置
9 A0 Q3 `0 G$ h$ }# k
" X- q0 H3 `/ t- b, u/ c6 ~在后台还有一些设置,可能会干扰https的使用
! P$ u8 S0 V! o- X1 U: f% k2 [( K+ S
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
, n7 Y: v& V: q) a% }
$ K" z$ P6 k7 m  z1 V2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头 8 O4 S& c3 I$ A. a% P# D
7 T7 O5 ]" N8 F6 c
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。   j( o3 M' Q- \6 r1 R! Q
) m, p+ A! i; y% K6 l$ f
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。
" y5 \. B  \+ ]- C/ N2 j# H. V& p9 b5 t5 c) ?4 q4 m
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。
% H/ W* i8 t- o5 Q6 C* S  Z* j2 e% V1 l' m4 @
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。+ A- w' ^* B! A7 ^- r: Q* P# Q
! X2 p$ k, d9 s& p2 \- k( R
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
8 b/ j" h# i% t1 G

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

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

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

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

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