开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html( R& ?0 X# M3 f7 t0 z# @/ P" J) @" X
( \2 h, X. {5 O' v# n$ j9 B. S
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?
7 p. B6 F4 y# |, H# S% E4 F! t( U2 a- K
先说说discuz目前一些落后的地方:& t4 |6 k- E9 d
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用
/ t: i: X8 l' D4 E( q/ Z# k2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。8 L$ [3 W& M8 S( A( g0 X( b
) ]% F5 S6 v8 P: a2 a
下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
) N# j) t5 w( G* w1 L8 K$ p, i" @8 S: `; o5 U. f, N/ \0 O. i) D2 z
一、SSL证书&配置 # [% a6 B1 Q" I

0 b. {+ ~* C4 A/ a! L) e+ ]首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述)
3 n  w9 {5 k# a2 {: I) Z; S% a) @9 v5 o: ]0 \7 |
二、Discuz! 程序调整 + ^7 k  J2 v, Q( d5 a2 O2 _
+ E0 o' h8 `: D& R: z! @
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 " H9 l$ [4 S! A
  y2 V; q( P" U8 s3 S- \% h% b# T
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。 # g. |7 X# \0 h: `
- p5 ~2 e- Q( A7 @5 P" F: @
1、打开source/class/discuz/discuz_application.php(约第187行处):查找: ) L4 a  j3 }! w- n  D2 w. v
/ S4 r5 i6 @8 A0 C# q5 s
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      . D+ d& l( Y1 ]$ {* L* C+ Y
    2. 复制代码
    复制代码

    " l1 k. r) [/ P/ ^) W
. r; b/ c5 m. ^0 d- D

4 `) {, g6 d: c
! W# e1 ^; s5 w. l4 U修改为: ' c$ f2 y5 x. r- b& N/ f: j4 X
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      : b2 d8 |$ i# e) m  |
    2. 复制代码
    复制代码
    7 o8 I# r# l  E3 W% g3 @

, k  B7 b9 B+ k; h3 f* C

. M: J/ p5 p$ L% W7 ^$ G2 s4 h+ F* j' ?
5 x7 Z- |- \: G4 x! w2 R, E
2、打开uc_server/avatar.php(约第13行处): 查找: $ t1 G4 i/ V% R& k2 E

, r- R2 @9 N/ u2 ^8 y, V1 e
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));$ |: m6 h# H* }. Q  b

* j; g7 @8 L' H/ K[color=rgb(51, 102, 153) !important]复制代码
7 L: c, R% Y0 @) l3 u- G3 W9 Q7 T
4 X) K( F& [7 Q. v

. F% w/ w. X$ E# U% a! J$ z修改为:
) @- S! I7 N% ?! R$ w% O- d0 {  U, ?
  • + |+ Z5 |/ v# P
5 j" b% m2 K, U; y# w
  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'], '/'))));
复制代码

& l! R& U1 J9 v0 S
0 F9 `* d, A4 f8 T& L1 e( ~
9 L# I; \( J$ U2 f1 a( V

  N  ~5 \5 x0 U3 x; g5 A- K% V2 m  J; U修改过后,更新缓存,发现大多数链接都变成了https。
/ I7 Z/ a* }  N
# o* l+ T6 D5 V6 x三、后台设置 + t4 S( y7 x. L
* h! H3 t" \" W: ~8 B0 u2 ]) f
在后台还有一些设置,可能会干扰https的使用
% j2 K. x7 R! `' t% O' P
8 B: q/ {  b: z5 U- I* g8 v: B1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的 ' q- u4 x5 C9 \: s8 T0 A# s: m
+ q- h8 u1 h+ v- E! B5 M" r7 q
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
7 O1 _/ h, G+ u& }' U; I; S, V& H1 W' m: V6 |
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。
1 T1 z7 _$ V' V7 p/ L2 a" h0 Q( w6 @6 {. M! A
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。 1 @* f( |/ {  D' B( W" K! [
7 n( k4 D) p2 W9 T
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。0 H6 h) l4 J/ s  v, f4 y  S
& Y  a7 \2 x, X" w* t
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
( u' }7 |6 q: q; F
, R' d, C' d0 C+ j/ S" F4 f3 N最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
1 G! D  F0 i% s  l

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

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

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

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

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