nginx配置https转发规则(Nginx配置https原理及实现过程详解)
nginx配置https转发规则
Nginx配置https原理及实现过程详解使用linux实用工具certbot来生成https证书
这个工具是生成Let's Encrypt证书,
Let's Encrypt数字证书认证机构,Let's Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务
提供免费的SSL/TLS证书
2015年12月3日,该服务进入公测阶段,正式面向公众。
2016年4月12日,该项目正式离开Beta阶段。
到2016年9月9日,Let's Encrypt 已经发放 1000 万张证书。
因此对于大部分中小型网站来说,是一个值得考虑的选择。
https配置的步骤
1打开 https://certbot.eff.org/ 选择对应操作系统与 Web 服务器
这里我选择nginx服务器,CentOS7服务器上
2执行命令,并根据需要修改相应域名参数。
certbot要通过yum安装,certbot被打包到epel源中,
所以安装启动epel库,安装epel源查看链接
https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
启动epel源,可以使用手动自己启动epel,也可以借助yum-config-manager命令来启动
安装yum-config-manager
yum -y install yum-utils
启动epel
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
3安装certbot
sudo yum install certbot python2-certbot-nginx
获取证书的两种方式:身份验证器和安装程序
使用webRoot插件进行安装,这个要求你的服务器80端口能够正常被访问到(这个域名是属于你的)
webRoot插件通过certonly和--webroot(或者-w)在命令行上执行命令
certbot certonly -w /var/www/example -d www.example.com
certbot certonly -w 可以被http访问到的webroot目录 -d 要配置https的域名名称
上面的 /var/www/example表示的是在nginx配置文件中root根节点所指向的根路径
webroot插件的工作原理是为每个请求的域创建一个临时文件${webroot-path}/.well-known/acme-challenge。
然后,Let的加密验证服务器发出HTTP请求,以验证每个请求的域的DNS是否解析为运行certbot的服务器。
访问请求如下
66.133.109.36 - - [05/Jan/2016:20:11:24 -0500] "GET /.well-known/acme-challenge/HGr8U1IeTW4kY_Z6UIyaakzOkyQgPr_7ArlLgtZE8SX HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
所以我们服务器需要放通.well-known/acme-challenge这个访问路径
例如,
server { listen 80; server_name www.example.com; index index.html ; root /var/www/example; 。。。 location ~ /.well-known { allow all; } }
具体的http配置文件
server { listen 80; server_name www.example.com; index index.html ; root /var/www/www.example.com; location / { proxy_redirect off; proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; location /nginx_status { #stub_status on; #access_log off; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /data/log/nginx//var/www/www.example.com/-access.log; error_log /data/log/nginx//var/www/www.example.com/-error.log; }
执行完命令后,https证书就会生成在/etc/letsencrypt/live目录下
certbot certonly -w /var/www/example -d www.example.com
比如上面的命令会生成证书/etc/letsencrypt/live/www.example.com/fullchain.pem
生成证书密钥文件/etc/letsencrypt/live/www.example.com/privkey.pem
然后我们只需要为该域名加上https配置,我们nginx就配置完成https
https对应443端口
具体https配置文件
server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name www.example.com; index index.html index.htm index.php default.html default.htm default.php; root /var/www/www.example.com/; ssl on; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; location / { proxy_redirect off; proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; include enable-php-pathinfo.conf; location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /data/log/nginx/www.example.com-ssl-access.log; error_log /data/log/nginx/www.example.com-ssl-error.logs; }
查看生产的证书
tree /etc/letsencrypt/live/
证书续签
Let's Encrypt 生成的免费证书为3个月时间,但是我们可以无限次续签证书
certbot renew
使用定时器来自动重新生成证书
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
centos6使用
1获取certbot客户端
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
2停止nginx
service nginx stop
3生成证书
./certbot-auto certonly --standalone --email `你的邮箱地址` -d `你的域名地址`
当前网站有多个域名时需在后面增加,例如
./certbot-auto certonly --standalone --email `你的邮箱地址` -d `你的域名1` -d `你的域名2`
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
- nginx https 域名配置(阿里云Nginx配置https实现域名访问项目图文教程)
- nginxdocker界面(Docker部署nginx实现过程图文详解)
- nginx-rtmp-module 配置(Nginx搭建rtmp直播服务器实现代码)
- nginx404错误页面设置(Nginx tp3.2.3 404问题解决方案)
- nginx反向代理怎样实现(Nginx反向代理配置的全过程记录)
- nginx查看请求协议(Nginx之Http模块系列之autoindex模块的具体使用)
- linux nginx搭建(Ubuntu使用nginx搭建webdav文件服务器的详细过程)
- 做网站是使用nginx还是apache(web服务器软件Apache与Nginx的对比分析)
- 安装了nginx怎么启动(windows下快速安装nginx并配置开机自启动的方法)
- 实战部署nginxdocker(基于Docker、Nginx和Jenkins实现前端自动化部署)
- linuxnginx常用状态命令(nginx常用命令放入shell脚本详解)
- nginx查看rewrite日志(Nginx Rewrite使用场景及配置方法解析)
- nginx 可以部署java吗(Java-利用Nginx负载均衡实现Web服务器)
- nginx反向代理spring boot(Nginx+SpringBoot实现负载均衡的示例)
- nginx安全设置(Nginx+ModSecurity安全模块部署的实现)
- nginx跨域怎么用(如何利用map实现Nginx允许多个域名跨域)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
- 蓝天代表什么(蓝天代表什么生肖)
- 今天要吃什么(今天要吃什么菜)
- 营养餐是什么(学校营养餐是什么)
热门推荐
- mysql 时间戳获取(MySQL时间盲注的五种延时方法实现)
- 网站建好后怎么选服务器(搭建网站时如何选择服务器?)
- js中Attribute和Property区别
- python的基本函数及用法(Python3.6.x中内置函数总结及讲解)
- 学会python一月能赚多少钱(学习python的前途 python挣钱)
- poll?transport=longpoll&connection...连接的作用
- 浏览器怎么显示javascript页面(JavaScript如何通过userAgent判断几个常用浏览器详解)
- sql怎么把表移到另一个数据库中(sql存储过程实例--动态根据表数据复制一个表的数据到另一个表)
- python的条件判断和循环(对Python中的条件判断、循环以及循环的终止方法详解)
- 网络虚拟机系统安装教程(NPOINT免费虚拟主机管理系统windows2003的安装方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9