在当今互联网安全日益重要的背景下,Discuz! X3.2论坛系统的全站HTTPS改造显得尤为重要。本文将详细介绍如何通过六个关键步骤,实现Discuz! X3.2的全站HTTPS支持,确保站点链接默认为HTTPS,并避免浏览器提示“不安全内容”。
### 一、服务器前端程序的配置 大多数用户使用Nginx作为前端服务器来开启HTTPS支持。以下是适用于Nginx版本1.8.0的配置示例:
server {
listen 80;
server_name www.aizhanku.com;
index index.html index.htm index.php default.html default.htm default.php;
root /data/web/www.aizhanku.com;
return 301 http://$server_name$request_uri;
#HSTS
}
server {
listen 443 ssl;
server_name www.aizhanku.com;
index index.html index.htm index.php default.html default.htm default.php;
root /data/web/www.aizhanku.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;
location ~ [^/]\\.php(/|$) {
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;
}
location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\\.(js|css)?$ {
expires 12h;
}
access_log off;
}
### 二、修补和完善Discuz对SSL的判断 Discuz默认通过`$_SERVER['HTTPS']`判断是否启用SSL,但在Nginx+PHP-FPM架构下可能无法正常工作。因此,需要修改以下文件: 1. **`source/class/discuz/discuz_application.php`** 修改第187行附近的代码:
$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
### 三、去除非HTTPS内容 为了避免浏览器提示“不安全内容”,需要删除或修改加载非HTTPS资源的脚本。例如: - 删除`Source/plugin/manyou/Service/DiscuzTips.php`中的JS加载脚本。 - 修改`template/default/forum/viewthread_node_body.htm`中头像链接的HTTP路径。
### 四、后台设置的调整 1. **全局设置** 将“站点URL”更改为以`https`开头。 2. **UCenter设置** 修改UCenter访问地址为`https`开头。如果UC和论坛在同一台服务器上,通讯失败可忽略。 3. **域名设置** 删除“应用域名”中的默认域名(如`forum.php`),以确保默认连接为HTTPS。
### 五、模板文件的调整 检查并修改模板文件中的HTTP链接,将其替换为HTTPS。重点关注`foot.html`和`header.html`等文件。
### 六、数据库的调整 运行SQL命令更新数据库,将所有HTTP链接替换为HTTPS:
UPDATE pre_forum_post SET message=REPLACE(message,'http://www.dede58.com/','https://www.dede58.com/');
#请将www.dede58.com替换为自己的域名
通过以上六个步骤,您可以成功实现Discuz! X3.2的全站HTTPS支持,提升网站的安全性和用户体验。