开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html& [: A4 J( M1 K& h. P
& \, j5 O/ Y9 |8 o+ |" H' l& l# Q; u
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?- ^2 C' O+ K2 y) q  N+ R7 J- \

0 K& M$ @3 \, m" b/ e5 G6 D先说说discuz目前一些落后的地方:; z* u& |0 ^0 k5 c7 V
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用$ k! n  B$ A, ~5 ]7 R
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。$ O, O5 `) y! S6 W; d4 Q5 A6 m

$ F( ^8 `6 g5 @6 Z9 Q$ u; u$ V下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
4 H. `$ H7 R( {. O; E5 R& a
4 D: ^8 B' g8 ]5 h6 ~3 M, }' k一、SSL证书&配置   Q" g# t! M1 Z6 n$ h6 W
% I! H+ c' o8 d6 ^$ p
首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述) 4 W* L0 W! \! B3 m

0 C/ l$ f6 r& D+ T( z* a二、Discuz! 程序调整 : ^9 z& K: ]% [; \
  z7 E4 }0 w! l& M# e' l2 l) l: E+ z
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。
& k, y+ q+ O# m1 d: ^  n! {. W0 K
) K5 O9 t' \% J' \/ H  CDiscuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。 4 X: @- ?4 A* @9 S5 g% I
3 e8 o  G2 s( X( Q8 @! ^
1、打开source/class/discuz/discuz_application.php(约第187行处):查找:
* x9 T1 D) \4 ^8 t. |1 T* i. |3 F: [4 g8 _! m
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      ) ?# c  u) w( Y# s/ s. u( J
    2. 复制代码
    复制代码
    % N5 M! A1 P$ l6 L) d" M1 j3 Q( @
) i% R2 a" }! ?. V* o
' \  X* `% ^; t) p' x8 ~9 h. h
% [) m, F) I& F9 Q1 Q% \0 G  d
修改为:
# B% ^; }5 h3 N
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;( w! ^6 S& v, U( ~
    2. 复制代码
    复制代码
    5 H7 R  O" U. g- v
6 u) Q# z8 ^6 ~& e* m3 Y$ G
8 x0 {1 n5 v0 q3 d! I
( ^5 u( |  C( i; }# L! M+ {$ o3 l
. g8 e+ i: j1 w& v5 \
2、打开uc_server/avatar.php(约第13行处): 查找:
0 f' J3 Z6 r) _$ u' R) o' a  k2 _4 }  k( O8 e( L
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));( G9 q6 {/ l2 A' o. e

; Y$ t8 }$ r8 U3 y[color=rgb(51, 102, 153) !important]复制代码

5 Z$ V" m, s; A0 z1 a1 @+ j/ K+ c+ b: t% d
# a0 H9 B) n: S+ t
修改为: $ u1 D! w9 Y0 I" ~- w
6 h5 b7 g  g( b: ?7 l

  • , }. \" U! L( L0 @

2 Z9 l6 U  p4 ~$ q
  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'], '/'))));
复制代码

2 q: N  a2 M( @/ |3 R5 s
; E/ e% y0 i: M+ e1 ]7 Z# L3 ?
3 m! X) W2 V0 X
! z" ?% M  ^; K7 _5 F
修改过后,更新缓存,发现大多数链接都变成了https。 / S! a5 ]- f! ]8 M# F
2 t) ~* |$ F6 Y4 B* H% }- Y# i
三、后台设置 ; u3 p: J1 S% X( ]% X- W+ M

/ w. F+ k8 N# v  x! B: c9 R在后台还有一些设置,可能会干扰https的使用
, p5 Y9 d" W  k2 K: t6 Q4 P! S7 D3 p2 e, _3 ]( r7 |( S4 S$ T
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的 / l7 b+ C8 r" F2 f- S

. X1 L: s  {' v; d- G' p2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
+ t  f5 X, m" g) c7 m/ A% j! |! {0 j# ~  y8 R# \- T0 s4 s
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。
" ]# J" y5 Y: R  L3 a( p7 Q
# Q4 b9 I* h, |7 k; X; |' ^& }& v4 ^3、清理缓存,设置完成之后,需要清理缓存,使设置生效。 2 B/ l* D3 a; ^# M

  R9 T0 Q; o: p" B! ]* r/ Y清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。& Y% r' Z, `2 @5 b8 ]5 H
( ~' P' ]0 v7 W( R! \* ?
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
- h( b- `0 w  z  r3 n
! X8 C0 `7 f7 }0 J最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
" n0 e' d+ v# Z. P+ w" X% L

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

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

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

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

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