首页
关于
友链
留言
统计
Search
1
基于Rocky Linux 8.10系统使用源码搭建LNMP环境,附加安装SQLite
233 阅读
2
阿里云轻量应用服务器图文安装红帽系统RHEL8.10
59 阅读
3
.NET Framework
44 阅读
4
博客测试文章
18 阅读
5
基于LNMP环境搭建Typecho博客
17 阅读
软件整理
C/C++学习笔记
Linux学习笔记
博客搭建
杂项
Search
标签搜索
Nginx
测试
LNMP
Typecho
红帽系统
Alpine Linux
GRUB
windows
PowerShell
MySQL
SQLite
PHP
Rocky Linux
HTTPS
SSL
Let's Encrypt
GDB
hansyee
累计撰写
100
篇文章
累计收到
2
条评论
首页
栏目
软件整理
C/C++学习笔记
Linux学习笔记
博客搭建
杂项
页面
关于
友链
留言
统计
搜索到
1
篇与
的结果
2024-08-11
基于Nginx的网站配置https强制访问
1. 前言 之前的两篇文章简单记录了 Typecho 博客的搭建过程: 1.基于Rocky Linux 8.10系统使用源码搭建LNMP环境,附加安装SQLite 2.基于LNMP环境搭建Typecho博客 但这里面因为是内网演示使用的是 http访问,不涉及任何 https 的设置。现在到处都能看到网站服务器使用 https ,说是安全性好,咱不懂,也没精力和技术去研究,也不知道咱这没流量的小破站需不需要那么高的安全性,服务器上也没啥重要数据,对安全性我到没那么高要求,毕竟不知道哪天就到期关闭了。。哈哈哈!但是话说回来,对不支持 https 的网站浏览器左上角会出现红色叉叉的 http 标识,实在是太扎眼了,既然都说 https 好,那咱也来折腾一下吧,努力把这个博客搞得好看一点,正规一点,虽说没啥内容,但看着高大上也是不错的。 注:以下实验在阿里云轻量应用服务器完成,并非前两篇文章的内网实验,所以之前文中出现的内网IP 192.168.31.84 在本文中由域名 all.17zturn.com 代替,仅IP变化,其他参数配置一致。 2. 申请免费的SSL证书 要使网站支持 https 访问,首先得准备好 SSL 证书。别问我这是啥,我也不知道,专业的解释需要去专业的地方搜索,作为普通玩家,只要知道需要这么个东西就行了。首先这个证书的获取并不容易,专业的是需要收费的,且费用不低,好在现在为了推广使用 https,有许多机构推出了免费的证书申请,这里我使用的是大名鼎鼎的 Let's Encrypt。从这里申请的证书对专业用途有缺陷,有效期只有90天,但对普通玩家来说已经足够,反正到期可以再次申请新的证书,配置好脚本还可以自动进行申请。 2.1. 安装ACME客户端 引用官方的一段说明 Let's Encrypt 入门指南 为了在您的网站上启用 HTTPS,您需要从证书颁发机构(CA)获取证书(一种文件)。 Let’s Encrypt 正是其中一家证书颁发机构。 要从 Let’s Encrypt 获取您网站域名的证书,您必须证明您对域名的实际控制权。 这一过程通常由 Web 主机上运行的 ACME 协议客户端完成。 官网推荐的 AME 协议客户端是 Certbot。但是我这里选用的是acme.sh,其他更多客户端可参考官网提供的客户端列表ACME 客户端。 acme.sh 的安装特别简单,以下操作都以 root 用户执行 # email字段需要替换为自己的邮箱地址 curl https://get.acme.sh | sh -s email=nopoetry@outlook.com 安装后的文件存放在 ~/.acme.sh 目录下,根据项目介绍,后续所有操作的修改都在这个文件内完成,不会污染其他系统文件。 安装完成后,推荐关闭终端并重新启动新终端,这样可以直接使用 acme.sh 命令而不用加上繁琐的路径。 2.2. 申请证书 设置默认ca服务器( acme.sh 脚本默认ca服务器是 zerossl ,经常出错,会导致获取证书的时候一直出现:Pending, The CA is processing your order, please just wait.) acme.sh --set-default-ca --server letsencrypt http方式验证域名(需保证 acme.sh 客户端与网站内容在同一服务器上) # -d参数指定域名(若要申请泛域名证书,必须明确指定一条二级域名,这里是17zturn.com) # --webroot参数需要替换为自己的网站根目录 acme.sh --issue -d 17zturn.com \ -d www.17zturn.com \ -d all.17zturn.com \ --webroot /var/www/html/typecho 这里 acme.sh 客户端会在网站根目录下创建一个验证文件并完成自动验证,验证通过即会自动生成证书。 2.3. 安装证书 需要使用 acme.sh 客户端自带的命令来安装证书,不可直接使用 ~/.acme.sh 目录下的证书文件 # -d参数指定域名(这里直接使用泛域名证书) # --key-file 和 --fullchain-file 指定证书安装路径 # --reloadcmd参数指定nginx服务器重载配置的命令,这样在安装证书后会自动调用重载命令使网站使用新的证书 acme.sh --install-cert \ -d 17zturn.com \ --key-file /etc/ssl/17zturn.com/key.pem \ --fullchain-file /etc/ssl/17zturn.com/fullchain.pem \ --reloadcmd "systemctl reload nginx" 3. 配置Nginx支持https 3.1 http强制跳转https 配置 http 强制跳转 https 后,这样即使在浏览器输入 http://all.17zturn.com 也会自动跳转到 https://all.17zturn.com 页面。 编辑博客站点的nginx配置文件 sudo vi /usr/local/nginx/conf/vhosts/typecho.conf 将原来的 server 块的内容注释掉,修改后的所有内容如下 server { listen 80; server_name all.17zturn.com; access_log /usr/local/nginx/logs/typecho.access.log combined; return 301 https://$server_name$request_uri; } 3.2 https配置 增加博客站点新的https的配置 sudo vi /usr/local/nginx/conf/vhosts/typecho-https.conf 编辑内容如下 server { listen 443 ssl default_server; server_name all.17zturn.com; access_log /usr/local/nginx/logs/typecho.access.log combined; root /var/www/html/typecho; index index.php index.html index.htm; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_certificate /etc/ssl/17zturn.com/fullchain.pem; ssl_certificate_key /etc/ssl/17zturn.com/key.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } } location ~ .*\.php(\/.*)*$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 重新加载 nginx sudo systemctl reload nginx 浏览器访问 https://all.17zturn.com 能成功显示博客即说明配置成功。
2024年08月11日
5 阅读
0 评论
0 点赞