网站协议http升级为https、域名切换后主页图片访问异常处理
网站协议http升级为https
一、获取 SSL 证书
使用 Let's Encrypt(免费且广泛使用)
安装 Certbot:这是一个用于获取 Let's Encrypt 证书的工具。在 Debian 11 系统中,先确保系统软件包是最新的,然后通过以下命令安装 Certbot 及其 Nginx 插件:
sudo apt update
sudo apt install certbot python3 - certbot - nginx,如出现失败或提示The requested nginx plugin does not appear to be installed
先卸载sudo apt-get remove certbot,再执行sudo apt-get install certbot python3 - certbot - nginx 命名注意不要有空格
获取证书:安装完成后,运行以下命令来获取证书。假设你的域名是yourdomain.com(www.yourdomain.com),命令如下:
sudo certbot --nginx -d www.yourdomain.com (如还有报错重新执行apt install python3-certbot-nginx)
这个过程中,Certbot 会自动与 Let's Encrypt 服务器通信,验证你对域名的所有权(通常是通过在服务器上临时放置一个验证文件,Let's Encrypt 服务器会检查这个文件是否存在来验证),并为你的域名生成 SSL 证书,这些证书会被自动配置到 Nginx 中。
根据提示完成操作,通常会要求你输入邮箱地址等信息,用于接收证书相关的通知,如到期提醒等。
证书更新:Let's Encrypt 证书的有效期通常为 90 天,为了确保证书持续有效,你可以设置一个定时任务来自动更新证书。通过以下命令编辑一个新的定时任务:
sudo crontab -e
在打开的文件中添加以下一行(假设你使用的是 bash shell):
0 0,12 * * * /usr/bin/certbot renew --quiet
或0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
保存并退出:
nano 编辑器,按 Ctrl+O 保存文件,然后按 Ctrl+X 退出编辑器。
vi /vim 编辑器,按 Esc 键退出 I 插入模式, :wq 并按回车保存文件并退出
这条命令会每天在 0 点和 12 点检查证书是否需要更新,如果需要就自动进行更新。
查看定时任务:crontab -l
查看日志:grep cron /var/log/syslog
二、配置 Nginx 以使用 SSL
修改 Nginx 配置文件
打开 Nginx 的站点配置文件(一般是/etc/nginx/sites - available/default):
sudo nano /etc/nginx/sites - available/default
在server块中,你会看到之前用于处理 http 请求的配置。在这个server块下方,添加一个新的server块用于处理 https 请求,示例如下:
nginx
sudo tee /etc/nginx/sites-available/default > /dev/null <<EOF
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.test.top;
ssl_certificate /etc/letsencrypt/live/www.test.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.test.top/privkey.pem;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files \$uri \$uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
或
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
root /var/www/html;
index index.php index.html index.htm index.nginx - debian.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi - php.conf;
fastcgi_pass unix:/var/run/php/php7.4 - fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意将yourdomain.com替换为你的实际域名,同时确保ssl_certificate和ssl_certificate_key指向的证书文件路径正确(Certbot 默认将证书存储在/etc/letsencrypt/live/目录下)。
重定向 http 到 https
在原来处理 http 请求的server块中,添加以下重定向配置,将所有的 http 请求重定向到 https:
nginx
server {
listen 80;
listen [::]:80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
这样,当用户通过 http 访问你的网站时,会自动被重定向到 https。
测试和重新加载 Nginx 配置
在修改完 Nginx 配置文件后,首先使用以下命令检查配置文件是否有语法错误:
sudo nginx -t
如果配置文件语法正确,会显示nginx: the configuration file /etc/nginx/nginx.conf syntax is correct等类似信息。然后,重新加载 Nginx 配置使更改生效:
sudo systemctl reload nginx
三、更新 WordPress 中的网站 URL
修改 WordPress 数据库中的 URL 设置
登录到 WordPress 数据库(使用之前设置的数据库管理工具,如mysql命令行或者 phpMyAdmin 等)。
进入 WordPress 使用的数据库(之前创建的wordpress_db),找到wp_options表。
在wp_options表中,找到option_name为siteurl和home的两条记录,将option_value的值从http://yourdomain.com修改为https://yourdomain.com。
select * from wp_options where option_name in('siteurl','home');
update wp_options set option_value='https://www.mass.com' where option_name in('siteurl','home');
更新 WordPress 配置文件(可选)
打开/var/www/html/wp - config.php文件(这是 WordPress 的核心配置文件):
sudo nano /var/www/html/wp - config.php
确保文件中有以下两行定义(如果没有可以添加),将yourdomain.com替换为你的实际域名:
php
复制
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
完成以上步骤后,你的 WordPress 电商独立站应该就成功从 http 升级到 https 了。需要注意的是,在整个过程中,要确保所有的链接(包括图片、脚本等资源的链接)在 https 环境下都能正确加载,可能需要对网站内容进行全面检查和测试。
域名切换后主页图片访问异常处理
1.数据库替换域名
网站域名:
将找到的旧域名链接替换为新域名链接。确保只替换必要的链接,不要误操作其他内容。
通常情况下,可以使用 SQL 查询或数据库管理工具提供的“替换”功能来执行这些替换操作。示例 SQL 查询:
UPDATE wp_options SET option_value = REPLACE(option_value, 'old_domain.com', 'new_domain.com');
(请记住将 ‘old_domain.com’ 和 ‘new_domain.com’ 替换为实际的旧域名和新域名。)
2.文章链接:
在执行任何查询之前,请确保备份了数据库。
使用 SQL 查询来替换旧域名为新域名。示例:
UPDATE wp_posts SET post_content = REPLACE(post_content, 'old_domain.com', 'new_domain.com');
(请记住将 ‘old_domain.com’ 和 ‘new_domain.com’ 替换为实际的旧域名和新域名。)
3.媒体链接:
在执行查询之前,请确保备份了数据库。
使用 SQL 查询来替换旧域名为新域名。示例:
UPDATE wp_posts SET guid = REPLACE(guid, 'old_domain.com', 'new_domain.com') WHERE post_type = 'attachment';
(请记住将 ‘old_domain.com’ 和 ‘new_domain.com’ 替换为实际的旧域名和新域名。)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理