开启左侧

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

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

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

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

x
http://bbs.zb7.com/thread-534000-1-1.html: x/ O% |) T$ N, B; E) v
8 R$ a" _' r7 f
百度搜索支持https并全面开启https后,很多人都跟风https,今天就来说说discuz! X3.1/3.2 如何开启https(SSL)?4 Z  B5 i+ e$ l" Y% l+ n
. o  d  A6 c$ u) Z9 i" e! ?- Z2 H
先说说discuz目前一些落后的地方:
, i  x% Q4 N0 d: w3 [9 V9 g1、对高版本 PHP 兼容不佳,很多使用高版本PHP的都会出现很多诡异问题甚至无法正常使用6 T/ m) w8 w/ \# i
2、对 HTTPS 兼容不佳,因为云平台的一些应用接口不支持https,所以导致使用https后云平台的应用受到影响同时影响网站性能。" e8 Q6 x, S( @
" J2 e4 z3 J( D8 ~0 Q
下面教你如何给 Discuz! X3.1/3.2 开启https(SSL)支持:
) _: N$ n4 U) S6 B0 [7 P$ `8 S
$ V$ u4 Q6 {1 d& g, q' U一、SSL证书&配置 4 o% b: j, D0 l) {4 h# n& B

6 i# d0 a& V7 G* }/ s4 S" O8 P" T首先,要开启SSL,总得有一个证书吧?无论是正规CA颁发的,还是自己签的,没有肯定是不行的。如果没有的话,先去申请个吧。(具体方法请谷歌,这里不再赘述) 5 }! C5 Y7 @+ ?) ]# M& c4 A

# x+ J0 k$ m" `二、Discuz! 程序调整 ( T7 p6 k! a6 |

3 p. _1 ~: {  r& p' a5 N自 Discuz! X3 开始,已经加入了对https的支持,如果你使用https访问论坛,论坛中的链接都会变成https。如果你发现大部分链接都已经使用了https,就代表Discuz已经自动识别了,此时,可以跳过本步,直接进入下一步。 5 ^- f; Z2 l4 H/ Z3 Z" u9 q) j
; \5 n) X* R; R4 I* L# c/ F
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
) ~6 I2 D1 l8 V" Q2 V% |" C
/ t' H8 H8 \* X+ }0 h8 u/ d; o% C1、打开source/class/discuz/discuz_application.php(约第187行处):查找: ; D, A7 W9 j0 N& n# O
' d" H' p& u8 h3 y3 h
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;+ ^- P6 N: x6 L/ ]3 k
    2. 复制代码
    复制代码
    ! H% h8 g) q6 Y& u! C1 C
5 l* W6 j+ ]2 H" T

) Y- c" c# R4 A9 u* |" i0 _: A. |9 ], I* _! Q$ G
修改为: . |" P& d+ H! o, ^" y' G
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
      - Z5 A: T! A# d! A
    2. 复制代码
    复制代码
    / z( O/ M2 B) s7 C- }  [( h
& S1 L( \/ |9 L

0 \; ]- F- c. v+ D
2 h. P4 n$ B3 x4 `: m
) I: }. ^! q! G0 `: a# f2、打开uc_server/avatar.php(约第13行处): 查找: $ v4 c% ?% s9 r: a) q
, M* o/ B' m% r& V: n
  • define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));: [5 S/ }' Y' i- x

6 H' V+ D# O8 p0 J+ c4 g[color=rgb(51, 102, 153) !important]复制代码

$ l9 k  K7 b$ Q  H. r! k" G4 ?; h! B( A5 j" L5 |9 F1 @" l  P: T' S
8 o1 W& X- j2 `% l, z9 J- F; W
修改为:
3 Z3 m; B" r9 `* p: }6 |) D( j  P) e# M7 u5 Q1 N' G
  • , M# x8 |+ a; s9 n$ v4 n5 e; P( f

" t  C6 Q! f4 K
  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'], '/'))));
复制代码

* P1 A$ m& w! F9 h5 v4 K

4 f+ p! u0 }; X/ t6 T& t! B
; H1 h/ a0 J* M6 V
( A+ a% m3 C$ T8 A/ D修改过后,更新缓存,发现大多数链接都变成了https。 ) ?8 ~1 w+ w. D

: x  }; |. b4 D# Z, K  t/ h9 r8 ?三、后台设置 3 ?  J7 I, _  W2 U, W, T- ]+ s; m. ~
3 I& A% b' C  J1 f3 F, e- g" x
在后台还有一些设置,可能会干扰https的使用
( W5 S% ~7 u$ J3 h0 N4 f& h* S- K% M6 t4 D
1、后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
' u6 H' J: _& k8 R- v
' T5 L2 u, H. F9 J5 v% L. t$ S2 z2、UCenter后台 > 应用管理 > 应用的主URL,修改为https开头 0 V' x' }1 m& Y4 M
- m% r$ W4 k4 I" F3 _
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。 ' K8 w  C' F+ G7 L
# h- K5 B7 R. C# d! `  |
3、清理缓存,设置完成之后,需要清理缓存,使设置生效。
2 O/ b, h$ a/ I  M' n( E# Q# S$ F$ Z3 ?4 j0 m. ?8 ^; @
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效) 。
) l9 L( ?/ P. C" j. e, n" W% e$ {" S9 S- {2 \4 x
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。
* B3 \! G4 I- W' p  a* T2 w. K; {$ \+ a0 J- L$ P
最后:个人不建议使用discuz开启程序https,因为ACE的HTTPS问题很多,同时discuz程序自身对HTTPS支持也不好。5 y; G7 A4 v8 s- d9 L- w0 |( n


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

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

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

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

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