最新公告
  • 欢迎您光临搜搜资源,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境立即加入我们
  • discuz怎么设置全站https(6步教你快速设置)

     

    Discuz! X3.2 本身对HTTPS的支持很有限,程序本身支持,但还有很多地方需要调整和修改的。

    真正的全站HTTPS就是:

    1)站点全部链接默认HTTPS,无任何HTTP链接通过301跳转到HTTPS。

    2)浏览器显示绿色安全标志,无“不安全内容”提示。

    Discuz!X3.2论坛实现全站HTTPS终极方法教程

    具体来说,我们需要从以下6个方面来实现我们最终的效果。

    一、服务器前端程序的配置

    一般来说,大家多使用Nginx作为前端程序,关于Nginx开启HTTPS的教程,网上有很多,你可以参考这篇文章:

    https://aotu.io/notes/2016/08/16/nginx-https/。

    这是本论坛的Nginx配置文件,Nginx版本为1.8.0。

    server

    {

    listen 80;

    server_name www.repaik.com;

    index index.html index.htm index.php default.html default.htm default.php;

    root /data/web/www.repaik.com;

    return 301 https://$server_name$request_uri;

    #HSTS

    }

    server

    {

    listen 443 ssl;

    #listen [::]:80;

    server_name www.repaik.com;

    index index.html index.htm index.php default.html default.htm default.php;

    root /data/web/www.repaik.com;

    #SSL Start

    ssl_certificate /root/ssl.crt;

    ssl_certificate_key /root/ssl.key;

    ssl_ciphers “EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH”;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_prefer_server_ciphers on;

    ssl_session_cache shared:SSL:10m;

    #SSL End

    include discuzx.conf;

    #error_page 404 /404.html;

    location ~ [^/]\.php(/|$)

    {

    # comment try_files $uri =404; to enable pathinfo

    try_files $uri =404;

    fastcgi_pass unix:/tmp/php-cgi.sock;

    fastcgi_param HTTPS $https if_not_empty;

    fastcgi_index index.php;

    include fastcgi.conf;

    #include pathinfo.conf;

    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

    expires 30d;

    }

    location ~ .*\.(js|css)?$

    {

    expires 12h;

    }

    access_log off;

    }

    二、Discuz判断服务器是否使用SSL的修补和完善

    Discuz判断服务器是否使用SSL的代码不适合Nginx+CGI的情况,即PHP-FPM。这个时候我们需要修改以下文件:

    Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,但是因为我的VPS架构问题(nginx+php-fpm),无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。

    source/class/discuz/discuz_application.php(约第187行处):

    查找:

    $_G[‘isHTTPS’] = ($_SERVER[‘HTTPS’] && strtolower($_SERVER[‘HTTPS’]) != ‘off’) ? true : false;

    修改为:

    $_G[‘isHTTPS’] = ($_SERVER[‘SERVER_PORT’] == 443 || $_SERVER[‘HTTPS’] && strtolower($_SERVER[‘HTTPS’]) != ‘off’) ? true : false;

    uc_server/avatar.php (约第13行处):

    查找:

    define(‘UC_API’, strtolower(($_SERVER[‘HTTPS’] == ‘on’ ? ‘https’ : ‘http’).’://’.$_SERVER[‘HTTP_HOST’].substr($_SERVER[‘PHP_SELF’], 0, strrpos($_SERVER[‘PHP_SELF’], ‘/’))));

    修改为:

    define(‘UC_API’, strtolower(($_SERVER[‘SERVER_PORT’] == 443

    三、除去非HTTPS内容避免提示”不安全内容“

    Source/plugin/manyou/Service/DiscuzTips.php ,最后的那段JS加载脚本删除就行。

    非楼主层如果有点评,那么点评者头像不是HTTPS开头,也需要修改一个文件来适配:

    template/default/forum/viewthread_node_body.htm(约180行),搜索div >,将下面一行注释掉或者删除。

    打开浏览器,使用开发者工具或者查看源码逐一排查加载的非HTTPS资源并修改。

    四、后台设置的修改完善

    在后台还有一些设置,可能会干扰https的使用

    后台 >全局 > 站点URL,改为https开头的

    后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的

    UCenter后台 > 应用管理 > 应用的主URL,修改为https开头。修改后可能会显示通讯失败,如果UC和论坛程序安装在同一机器,此失败可无视,实测可以和UC正常通讯不影响(测试是否正常通讯程序的Bug),如果UC和论坛程序不在一台机器上,有可能不能通讯。

    另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果更新缓存后论坛默认连接还是HTTP,请删除 后台 > 全局 > 域名设置 > 应用域名 > 默认 里面的默认域名(一般去forum.php尾巴这里会有内容,为了HTTPS请删除)。

    五、模板的调整

    主要在模板的foot.html以及header.html等文件中,使用工具逐一排查模板文件中写死的HTTP链接,修改为HTTPS。

    六、数据库的调整

    在论坛这种交互社区中,经常回复发帖时会有出现主域名的链接,在没有HTTPS之前,链接都是HTTP开头,这个时候,我们需要修改数据库,运行下面的mysql命令更新数据库,将HTTP替换为HTTPS:

    进入DZ后台:站长 – 数据库 – 升级

    UPDATE pre_forum_post SET message=REPLACE(message,’http://www.txiaohe.cn’,’https://www.txiaohe.cn’);

    #请将www.txiaohe.cn替换为自己的域名

    需要注意的是,出于安全考虑,Discuz后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,如果想自己随意书写SQL升级语句,需要将程序文件config/config_global.php当中的$_config[admincp][runquery] 设置修改为1。

    搜搜资源-全网优质精品站长资源-海量网站源码建站模板免费下载-站长学习交流成长平台
    搜搜资源 » discuz怎么设置全站https(6步教你快速设置)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    搜搜资源
    一个高级程序员模板开发平台
    • 2会员总数(位)
    • 340资源总数(个)
    • 23本周发布(个)
    • 339 今日发布(个)
    • 723稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情