开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html* r) [) d2 z( [* F" s( X2 b
& B7 C. t' W* l  ^; o
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?1 c3 i2 }/ i" L% v
  T( x, Q3 L3 {1 x8 f
先说说discuz目前一些落后的地方:3 Z* U' }" q. W7 Y
1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用6 z7 ?& z3 h; F! [4 t
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。: B) v( j  _0 a) Z! P2 |" ~
0 ?0 }7 d2 T/ k
下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
' }5 H; \1 x% D& ~. _& V3 O$ g, q- D" I  M" }4 U* y% R' M! K
一、SSL证书&配置
1 l( y, u, Z3 S6 |; |: r; X- s2 ?$ c+ t0 t! Z
首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述) & A# P" j" L( {3 j

+ O& N! \8 t% K二、Discuz! 程序调整
3 w, Q: w/ P1 J; R4 h
5 |0 K/ C) F; Q( o4 T5 f  ?自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 1 W. h. B1 c7 _3 d5 z: m9 b9 c, P
. p+ o6 W8 T7 L2 k: b6 T
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
: ?0 Q' L9 V4 B9 T- \3 G9 ^9 t: c. \
1、打开source/class/discuz/discuz_application.php(约第187行处):查找: ) ]  A' ]4 \8 ~& s

2 j" N( v( C, q
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      2 @( U9 D+ c  W
    2. 复制代码
    复制代码
    , u9 D0 M/ |1 z% ?9 O8 g

- n' R( O  h2 j' h
# t8 ]) `2 I( g% k
! X& P. B+ A0 o; q3 n
修改为: ( a6 ~* W, o* |
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;+ L9 S6 n3 \3 m! u, a, g
    2. 复制代码
    复制代码

      ~9 e2 e9 B, T) }+ D$ o) |. M
  O( E7 R: r: R
2 q' g( z0 c' t2 S) [
% |4 Y4 v* q5 R- m6 s
  n/ d7 D, m7 X% k3 o
2、打开uc_server/avatar.php(约第13行处): 查找: ! n$ u/ h- e% }: ^

- N# T; i+ w' X8 i7 S
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));+ ?9 T0 K1 l3 `) Q; E

5 }; e" I$ a4 T/ k1 \; j3 ][color=rgb(51, 102, 153) !important]复制代码
% X3 j% G$ R$ w  B/ J

2 K- S1 o* f$ q: P  I( O
0 T5 W3 b" [9 b* f修改为: 7 G# n( ^" f* T, t/ [! V* @; c6 Y( |. p

, ?/ ~4 Y, Z% p; W$ S
  • - ]8 V# S8 D. H/ D- {$ r
5 l0 Q/ a! `" E- s4 ^0 n4 x4 R. s9 ~; c% v
  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'], '/'))));
复制代码

: j. j7 d3 e/ D- t& T& v0 c
2 c; b( u' r8 S8 \5 l! `

! ?5 f/ O+ @5 d# |" q7 p
( ?3 ?. L. p$ r4 W" }修改过后,更新缓存,发现大多数链接都变成了https。   b+ F  J0 x- m" r6 s6 J& v
2 k; [8 p) c: Q+ t3 q( v
三、后台设置
  ?4 G% i* U- V! o5 b* A& d& m* }$ ]
在后台还有一些设置,可能会干扰https的使用
# S# d. g3 x9 w, }7 @7 @
8 i) q" k3 k. Q1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
0 R% M* z2 A8 U9 \# n' U5 H3 x0 V8 w1 z2 H/ `3 `- c$ G
2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头 ; y' E6 w2 C' `. B4 E* ?

! a% ]5 j6 S+ c) h. ]% }* k8 T另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。
3 V6 b, }$ k' N  P- o1 {
/ f% _) V1 E% {+ p! ?( T3、清理缓存,设置完成之后,需要清理缓存,使设置生效。
. s" e% P* j2 p
8 M8 _5 Z* a* x清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。6 m- U- H4 n/ `. H, N2 }

) E, w) K' S1 w8 ~3 m3 @% Q( A至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。( b; x+ U: d) [6 X% R7 m5 Z
! G7 V9 V" w# K6 u
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。
6 N: K6 H4 [( ~- e

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

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

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

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

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