nginx怎么配置支持https
1、简介
超文本传输协议http协议被用于在web浏览器和网站服务器之间传递信息,http协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,
因此,http协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息,
为了解决http协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议https,为了数据传输的安全,https在http的基础上加入了ssl协议,ssl依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
2、 https的优点
尽管https并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但https仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用https协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)https是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等http网站,采用https加密的网站在搜索结果中的排名将会更高”。
3、 https的缺点
虽然说https有很大的优势,但其相对来说,还是存在不足之处的:
(1)https协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)https连接缓存不如http高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)ssl证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)ssl证书通常需要绑定ip,不能在同一ip上绑定多个域名,ipv4资源不可能支撑这个消耗。
(5)https协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,ssl证书的信用链体系并不安全,特别是在某些国家可以控制ca根证书的情况下,中间人攻击一样可行。
4、 下载 certbot
这里使用git下载,还没有安装git的查看如何
切换目录
cd /usr/local
克隆git仓库
git clone https: // github.com/certbot/certbot.git
克隆完成将会在/usr/loca/ 出现certbot目录
5、 查看 certbot
切换到certbot目录
cd /usr/local/certbot
如果目录是这样的说明安装成功了
certbot常用命令
6、 安装nginx
7、 申请https证书
查看当前证书
./certbot-auto certificates
第一次执行将会安装一些依赖,中途有一次确认询问,输入y即可
开始申请证书(证书有效期3个月,过期需要重新申请) 方式一:使用dns方式验证,该方式需要你能配置域名,我个人喜欢这种方式 ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d 你的域名 --manual --preferred-challenges dns-01 certonly 如:
配置泛域名
复制代码 代码如下:
./certbot-auto --server https: // acme-v02.api.letsencrypt.org/directory -d *.nl166.com --manual --preferred-challenges dns-01 certonly
配置制定域名
复制代码 代码如下:
./certbot-auto --server https: // acme-v02.api.letsencrypt.org/directory -d api.nl166.com --manual --preferred-challenges dns-01 certonly
配置二级泛域名
复制代码 代码如下:
./certbot-auto --server https: // acme-v02.api.letsencrypt.org/directory -d *.api.nl166.com --manual --preferred-challenges dns-01 certonly
如上图所示,第一次会让你输入一个邮箱,按要求输入就可以了,到时候会发送一个邮件给你,需要点击确认邮箱,所以务必填写真实邮箱,然后按要求确认就可,不确认是执行不下去的。
接下来会让你验证域名,按要求解析个txt类型的记录
保存确认以后再回到服务器中确认
上面这两个文件就是配置https用到的证书了
方式二:使用插件方式
我们先看看官方怎么说的
这里我使用的是nginx(申请完会自动帮你重启nginx) 这种方式配置不了泛域名,只能一个一个添加
./certbot-auto --nginx -d api2.nl166.com
解决上述报错,请注意,/usr/local/nginx 请替换为你的nginx实际安装位置安装lnmp
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx ln -s /usr/local/nginx/conf/ /etc/nginx
再次执行申请
中途会询问你请选择是否将http流量重定向到https,删除http访问。可根据自己的需求选择,我这里是c取消选择(实际上这一步可以直接不理,经测试,这一步没有选择前,访问网址https已经可以访问了。)
如果想省略询问这一步,可以添加certonly 该种方式只会生成证书,不做其余操作,证书配置需要自己手动添加 如下:
./certbot-auto certonly --nginx -d api2.nl166.com
如上图所示,如果你配置了监听443端口的server,他会帮你自动找到对应域名的配置文件,并添加下面两行,还把我格式打乱了,}号与上面{的缩进不对应了,不过不影响功能,这里不知道会不会根据nginx的版本选择是否添加ssl on;
因为我这个nginx版本是不需要这个的,较低版本需要添加ssl on;才能开启https访问。
如没有监听该域名的443端口,则会在如下位置添加信息
其他方式请自行摸索
8、配置nginx支持https
# https server # server { listen 443 ssl; server_name api2.nl166.com; root /data/web/im.nl166.com; location / { index index.php; } #auth_basic "hello world"; #auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param script_filename $document_root$fastcgi_script_name; } location ~ .*.(svn|git|cvs) { deny all; } ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # managed by certbot ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # managed by certbot }
较低版本需要增加ssl on;才能开启https访问。
9、使用shell脚本与定时任务定时续期证书
注意:为避免遇到操作次数的限制,加入 --dry-run 参数,可以避免操作限制,等执行无误后,再去掉进行真实的renew 操作。 方式一的续期
其中域名为/etc/letsencrypt/renewal/目录下的****.conf ,****就是你要填写的域名,比如我生成的时候是*.nl166.com,但是在实际生成的时候是没有*号的
/home/certbot-sh/au.sh 替换成你自己更新dns的脚本
如下:
复制代码 代码如下:
./certbot-auto renew --cert-name nl166.com --manual-auth-hook /data/shell/crontab/auto_update_httpscert. sh --dry-run
把更新命令放到一个文件,我这里是放在了/data/shell/crontab/auto_update_httpscert.sh 内容如下 ,原来的auto_update_httpscert.sh 更改到/data/shell/cnl_update_httpscert.sh
增加系统定时任务
crontab -e
#每个星期天凌晨5点执行更新https证书操作
0 5 * * 0 sh /data/shell/crontab/auto_update_httpscert.sh
方式二的续期 如下:
./certbot-auto certonly --renew-by-default --nginx -d api2.nl166.com --dry-run
增加系统定时任务操作参考方式一
以上是nginx怎么配置支持https的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

确认 Nginx 是否启动的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 检查端口 80 是否开放;3. 查看系统日志中 Nginx 启动消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

如何在 Windows 中配置 Nginx?安装 Nginx 并创建虚拟主机配置。修改主配置文件并包含虚拟主机配置。启动或重新加载 Nginx。测试配置并查看网站。选择性启用 SSL 并配置 SSL 证书。选择性设置防火墙允许 80 和 443 端口流量。

在 Linux 中,使用以下命令检查 Nginx 是否已启动:systemctl status nginx根据命令输出进行判断:如果显示 "Active: active (running)",则 Nginx 已启动。如果显示 "Active: inactive (dead)",则 Nginx 已停止。

在 Linux 中启动 Nginx 的步骤:检查 Nginx 是否已安装。使用 systemctl start nginx 启动 Nginx 服务。使用 systemctl enable nginx 启用在系统启动时自动启动 Nginx。使用 systemctl status nginx 验证启动是否成功。在 Web 浏览器中访问 http://localhost 查看默认欢迎页面。

启动 Nginx 服务器需要按照不同操作系统采取不同的步骤:Linux/Unix 系统:安装 Nginx 软件包(例如使用 apt-get 或 yum)。使用 systemctl 启动 Nginx 服务(例如 sudo systemctl start nginx)。Windows 系统:下载并安装 Windows 二进制文件。使用 nginx.exe 可执行文件启动 Nginx(例如 nginx.exe -c conf\nginx.conf)。无论使用哪种操作系统,您都可以通过访问服务器 IP

如何解决 Nginx 403 Forbidden 错误?检查文件或目录权限;2. 检查 .htaccess 文件;3. 检查 Nginx 配置文件;4. 重启 Nginx。其他可能原因还包括防火墙规则、SELinux 设置或应用程序问题。

问题的答案:304 Not Modified 错误表示浏览器已缓存客户端请求的最新资源版本。解决方案:1. 清除浏览器缓存;2. 禁用浏览器缓存;3. 配置 Nginx 允许客户端缓存;4. 检查文件权限;5. 检查文件哈希;6. 禁用 CDN 或反向代理缓存;7. 重启 Nginx。

服务器无权访问所请求的资源,导致 nginx 403 错误。解决方法包括:检查文件权限。检查 .htaccess 配置。检查 nginx 配置。配置 SELinux 权限。检查防火墙规则。排除其他原因,如浏览器问题、服务器故障或其他可能的错误。
