注意,此文章内容都基于腾讯云服务进行描述。
域名申请以及DNS解析,HTTPS证书申领
此部分内容参考腾讯云官方文档,官方帮助文档写的非常详细。这里把对应传送门给出来。
域名购买,DNS解析,HTTPS证书申领。
此篇文章重点在https证书在nginx上的手动配置方面。
配置HTTPS证书到WordPress
官方文档对NGINX的配置过程说的不够详细,这里详细说明一下配置过程。首先下载对应的SSL证书文件到云服务器上。开通有SSH登录的可以使用winSCP这个软件进行文件的传输。注意,只用传输后缀为crt和key的两个文件。
然后在nginx的配置文件夹下新建文件夹cert,并将两个文件复制过去。
sudo mkdir /etc/nginx/cert
sudo cp ~/path/to/ssl_folder/*.* /etc/nginx/cert/
这里,/path/to/ssl_folder/替换为为你自己上传的目录。然后配置对应的文件。
首先修改wordpress后台。在常规选项卡里面,将wordpress地址和站点地址修改为对应的域名地址。注意!此配置更新后可能会导致wordpress无法正常登录!请确保远程服务器能够正常SSL上去以防出现特殊情况。
下面对Nginx文件进行配置。首先修改/etc/nginx/sites-available/default文件,在service_name行下添加HTTPS强制跳转命令:
return 301 https://your_web_address$request_uri;
这里注意your_web_address替换为自己的域名。
然后此文件不要再进行改动了。后续的文件增添放置在另外的文件夹下。
在目录/etc/nginx/conf.d/文件夹下新建配置文件。此文件夹下的文件会自动更新生效。文件名任你喜欢,但是后缀应该为conf。这里我新建文件名称为ssl_config.conf。里面进行如下配置:
server { # SSL Listen Port listen 443 ssl http2; listen [::]:443 ssl http2;
# server_name server_name your_web_address; # ssl file name ssl_certificate cert/your_web_address_bundle.crt; # private certificate key file ssl_certificate_key cert/your_web_address.key; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; root /var/www/html; index index.php index.html index.htm index.nginx-debain.html; location ~* /xmlrpc.php { allow 127.0.0.1; return 403; } location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
server {
listen 80;
server_name your_web_address;
location / {
return 301 https://hostrequest_uri;
}
}
注意需要把your_web_address替换成自己的域名。保存退出。
这里配置文件与default部分有很大相似,主要原因是Nginx对ssl端口也需要进行对应的设置,包括访问内容转发给PHP后台等。因此有大部分内容是相似的。
验证nginx配置,更新nginx配置。
sudo nginx -t
sudo systemctl reload nginx
更新后,应该可以正常访问网站。同时记得修改文章内容,所有引用图片地址都需要修改为HTTPS来确保目录正确。到此网站已经实现HTTPS加密了。
加密后使用浏览器点击可以看见访问连接已经完全加锁了。直接输入IP和直接访问http都会被强制跳转到对应https页面。对应wordpress站点应该可以正常使用了。
至此HTTPS配置到此结束。