Nginx配置SSL证书(Https)给WordPress网站
前置条件:
服务器已经安装nginx和WordPress网站并且通过http可以正常访问。
1.去免费申请一个SSl证书
推荐一个SSL For Free网站:
网站地址:https://www.sslforfree.com
添加自己需要应用SSL证书的域名,比如我的WordPress网站域名*(tutujanjan.world),然后点击Create Free SSL Certificate按钮,系统会自动补齐www域名或者不带www域名。
1.然后我们选择90天证书
2.然后取消自动生成 CSR进行手动配置
3.输入邮件地址 城市 国家点击下一步
4.接着就可以下载一个TXT文件保存到本地
2.验证域名所有权
1.根据网站的提示到我们的服务器网站根目录添加文件夹
列如我的情况
/home/wwwroot/wordpress/.well-known/pki-validation
网站根目录为wordpress在下面创建
.well-known/pki-validation
2.把下载下来的TXT文件导入进去。
然后网站点击验证域名。验证成功就可以下载一个证书的安装包
分别是certificate.crt、ca_bundle.crt,以及private.key。
3.免费SSL证书部署网站
- 合并certificate.crt、ca_bundle.crt(其实就是用文本编辑器打开,然后把里面的代码复制到一起。)
- 把合并好的.crt文件改名为自己喜欢的名字,比如tutu.crt
- 然后在服务器中创建了一个SSL目录”/usr/local/nginx/conf/ssl/”,然后将合并的文件(laobuluo.crt)以及private.key,一并上传进去。
4.配置Nginx文件启动SSL证书
这一步我折腾了好久,格式一定要填对,网上找的教程很多和现在格式都不正确。
1.修改nginx.conf配置
首先进入nginx的安装目录
一般在/usr/local/nginx/conf里面
打开它或者使用命令
cd /usr/locla/nginx/conf
#修改nginx.conf文件
vim nginx.conf
2.找到server这一行进行修改
格式一定要对。
简单说明以下
server
{
listen 443; #监听443端口
#listen [::]:80 default_server ipv6only=on;
server_name tutujanjan.world; #你的域名
index index.html index.htm index.php;
root /home/wwwroot/wordpress; #站点目录。
ssl on; #开启ssl
ssl_certificate /usr/local/nginx/conf/ssl/tutu.crt; #ssl证书的crt文件路径
ssl_certificate_key /usr/local/nginx/conf/ssl/private.key; #ssl证书的key文件路径
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
include vhost/*.conf;
}
3.配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。
$ nginx -t // 检查nginx配置文件
4.配置正确后,重新加载配置文件使配置生效:
nginx -s reload // 使配置生效
5.如需重启nginx,用以下命令:
$ service nginx stop // 停止
$ service nginx start // 启动
$ service nginx restart // 重启
5.测试是否成功
输入https://tutujanjan.world 看看能否成功访问。
6.重定向到 443 端口
本来以为就结束了,然后我最后发现一个问题,就是必须手动输入https://在浏览器才能访问。
我们需要把80端口的http://重定向到443端口。
打开nginx.conf配置文件
在server上面再添加一行
server
{
listen 443; #监听443端口
#listen [::]:80 default_server ipv6only=on;
server_name tutujanjan.world; #你的域名
index index.html index.htm index.php;
root /home/wwwroot/wordpress; #站点目录。
ssl on; #开启ssl
相关配置:
server {
listen 80;
server_name YOUR_DOMAIN;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
比如我的就是这样的
搞定,只需要输入域名都能访问https://而不需要手动输入了。
总结
对于小白用户,前面步骤都挺轻松的,后面的配置信息因为格式不对,导致我一直没成功,折腾了半天。
建议配置nginx.conf的时候对它先进行一次备份。