开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html. X- C0 x3 `9 p- N

" a+ d# o! C/ K: t% J. _百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?/ j1 |; d+ f, i( [* k* R( C

) M2 g6 }( t: X! _- d# D: {先说说discuz目前一些落后的地方:$ z* I8 ]' }/ e3 c$ e( n4 P  B
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用
0 [( }7 \; T3 `0 p0 _! K& q2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。
1 g& }- {: Y* C3 _
' N2 l# L2 o6 i( A) b8 y) Z- V  j下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:5 X( [: K: W5 o: N. a5 F# ?

5 Q# Y; n6 M" v/ G一、SSL证书&配置
6 ~1 f+ M$ o& R* n3 N
* d% t$ o3 T: D' y( y8 ^, u首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述) ! A9 \4 ^9 a: b1 a) m# t
2 l; }. ~$ y4 p! l, s- Z
二、Discuz! 程序调整
% j+ a9 H9 X' g9 X' z0 [0 T' b
自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 7 G: r! N/ _2 G% ]

9 m& @4 _/ A# s8 n0 F  J8 s. lDiscuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
- f4 I! t- X1 \# y5 S2 T6 m) J
) k. x  p5 `* D5 S1、打开source/class/discuz/discuz_application.php(约第187行处):查找: & \/ q* l4 ], g5 L+ O, b

+ A7 S/ l& i6 l+ f" u+ {: S
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      , K9 `( e' T4 {$ Z" Z
    2. 复制代码
    复制代码

    . Q. T( V7 p$ M# `1 m  ^  @6 b
# Z4 q5 e/ F1 a& ]; H4 h( F* J

+ v6 K" q+ g1 _/ l8 S5 I& I' Y' I. h/ M$ |# L
修改为: " e8 `7 z1 w: R! W6 a( r  w
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;% \/ X* y# J" \2 t
    2. 复制代码
    复制代码

    + M9 a* J& Y( _( e$ z8 a
* C' X/ |/ C. L4 f8 y

" n' |4 d  I2 w+ A! G* Q9 w2 i* k: s6 b2 A: N. R  ~
+ l) T# i9 m# Q0 ^" e6 e1 J
2、打开uc_server/avatar.php(约第13行处): 查找: 9 [. S4 K# w. @, ~1 V
  M) R' `' X8 G& x2 Y1 y2 b. w
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));- F3 B' Q! v2 Q

) g( N+ D4 O) A% }7 {0 a7 F6 e[color=rgb(51, 102, 153) !important]复制代码

* @, d5 M- M! b0 M' F+ C
( t  s3 \; G% @9 K
* `' N" f2 m- |6 D2 y+ f8 j. }修改为:
: y  K' D0 Z) q9 g( L1 R. ^
  [  u! R7 n" x0 [) ]

  • # H! r3 _0 K1 T% d$ p+ j, \8 o

% Y1 M% o4 J9 c2 v; K, t
  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'], '/'))));
复制代码

6 H8 Q) C3 T, Y1 l
, D/ D( q* W* K( `3 M/ h- v

# E' a2 Z+ U/ _7 p# [* f7 k' U( e4 c0 _( }8 o; j
修改过后,更新缓存,发现大多数链接都变成了https。
, D2 ]7 t0 B. a: X2 h* H3 i! [4 c" M" n1 E# h
三、后台设置
( m$ u: O! Q3 z5 H2 W" z5 c9 c0 S9 r8 ]. k# s, Y+ B. x
在后台还有一些设置,可能会干扰https的使用 - H1 L8 L" ]2 ]7 a8 [# {! o

" p, X) f# ~* H- p- q1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的 1 h& `1 U* f% j* ~% O
. G- g9 J" n/ H" H
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
+ t( F$ P8 W2 n4 y+ d' T- r1 R7 b) q( i# E! e/ V0 D
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。 . a3 `- _: F, ]) m# n7 G* E) v
! n( [% i6 ]' v6 C3 B( u/ r
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。 - w1 }" P/ H9 B& p6 r8 j$ I& Z" g

2 k5 P! C- g. m, s4 H. Z清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。
; m- _' b% l8 N9 R3 D) V9 Y3 O* b4 a/ B9 w
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。. q% d3 |* T6 m- u7 A
  g* h; J6 Y7 G) M
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
, {( H8 t! m* _8 u9 I  B. w

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

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

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

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

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