首页 > 系统相关 >网站使用nginx部署ssl证书开启https(开启http2)

网站使用nginx部署ssl证书开启https(开启http2)

时间:2024-04-11 13:34:02浏览次数:31  
标签:nginx 证书 开启 server ssl haixtx https http2

目录

网站部署ssl证书就是将网站的http协议转换为更加安全的https协议

步骤:
腾讯云和阿里云部署ssl证书流程基本一致

1、腾讯云申请ssl证书(可以免费申请50个,有效期一年;阿里云可以免费申请20个,有效期三个月)

2、下载证书(最好选择nginx服务器,适合大多数服务器)

3、xftp将下载的证书上传到服务器指定的目录下(这里我是上传到nginx的目录下的/usr/share/nginx/cert/xxx)

4、nginx配置对应域名的443端口,开启ssl

5、nginx监听对应域名的80端口返回301强制重定向到该域名下的ssl443端口

上述配置完后直接访问域名(比如haixtx.cn)就会跳转到配置了ssl的443端口(即https://haixtx.cn)

详细说明:

1、腾讯云申请ssl证书

登录腾讯云官网搜索SSL证书->点击我的证书->点击申请免费证书

进入申请证书页面选择免费版,然后根据提示一步一步进行(注意一个ssl证书只能对应一个域名/二级域名),在填写域名时填写自己需要绑定ssl的域名,一般情况下申请了几分钟后就会成功

2、下载证书

选择需要部署的ssl证书点击下载,选择nginx服务器

将证书下载到本地后就通过xftp登录服务器准备上传证书

3、xftp将下载的证书上传到服务器指定的目录下

ssl证书下载解压后会有下面四个文件,只需要把.key.pem两个文件上传服务器,nginx部署会用到这两个文件

服务器新建一个文件夹存放证书,我这里新建/usr/share/nginx/cert/xxx来存放上传的证书文件

4、nginx配置对应域名的443端口,开启ssl

xshell登录服务器配置nginx(前提是得下载了nginx),nginx的子配置文件存放在/etc/nginx/conf.d目录下,

在/etc/nginx/conf.d目录下创建cert.conf子配置文件配置haixtx.cn域名的ssl

我这里把博客项目的三个项目对应的域名都配置了ssl,步骤都一样,每个域名单独配置

# /etc/nginx/conf.d/cert.conf
# 配置前台项目ssl
server {
    # 服务器端口使用443,开启ssl
    listen 443 ssl http2;  #开启http2
    # 域名,多个以空格分开
    server_name  haixtx.cn www.haixtx.cn;
​
    # ssl证书地址
    ssl_certificate     /usr/share/nginx/cert/blog/haixtx.club_bundle.pem;  # pem文件的路径
    ssl_certificate_key  /usr/share/nginx/cert/blog/haixtx.club.key; # key文件的路径
  
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
​
    # 反向代理,根据自己需求配置
    location / {
        proxy_pass http://101.33.249.237:82;
    }
    #静态资源缓开启缓存
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
    proxy_pass http://101.33.249.237:82;
        expires 30d;
        # 图片防盗链,防止其它网站利用外链访问我们的图片,有利于节省流量
        #valid_referers none blocked server_names ~.google. ~.baidu. *.qq.com;  # 只允许本机 IP 外链引用,将百度和谷歌也加入白名单有利于 SEO
        #if ($invalid_referer){
        #    return 403;
        #}
    }
    location ~ .*.(js|css)?$
    {
    proxy_pass http://101.33.249.237:82;
        expires 12h;
    }
​
}
# 配置后台项目ssl
server {
    # 服务器端口使用443,开启ssl
    listen 443 ssl http2; #开启http2
    # 域名,多个以空格分开
    server_name  admin.haixtx.cn;
​
    # ssl证书地址
    ssl_certificate     /usr/share/nginx/cert/admin/admin.haixtx.club_bundle.pem;  # pem文件的路径
    ssl_certificate_key  /usr/share/nginx/cert/admin/admin.haixtx.club.key; # key文件的路径
​
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
​
    location / {
        proxy_pass http://101.33.249.237:8000;
    }
    #静态资源缓开启缓存
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
        # 这里同样需要反向代理,不然请求路径会是admin.haixtx.cn,会出现404
        proxy_pass http://101.33.249.237:8000;
        expires 30d;
        # 图片防盗链,防止其它网站利用外链访问我们的图片,有利于节省流量
        #valid_referers none blocked server_names ~.google. ~.baidu. *.qq.com;  # 只允许本机 IP 外链引用,将百度和谷歌也加入白名单有利于 SEO
        #if ($invalid_referer){
        #    return 403;
        #}
    }
    location ~ .*.(js|css)?$
    {
        proxy_pass http://101.33.249.237:8000;
        expires 12h;
    }
​
}
​
# 配置后端ssl
server {
    # 服务器端口使用443,开启ssl
    listen 443 ssl http2; #开启http2
    # 域名,多个以空格分开
    server_name  node.haixtx.cn;
​
    # ssl证书地址
    ssl_certificate     /usr/share/nginx/cert/node/node.haixtx.club_bundle.pem;  # pem文件的路径
    ssl_certificate_key  /usr/share/nginx/cert/node/node.haixtx.club.key; # key文件的路径
​
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
​
    location / {
        proxy_pass http://101.33.249.237:3000;
    }
    #后端图片开启缓存
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
        proxy_pass http://101.33.249.237:3000;
        expires 30d;
    }
​
}

上面配置完后以https访问对应域名(比如https://haixtx.cn)(443端口)就可以正常访问到项目了,但是如果直接访问haixtx.cn还是会默认跳转到http:haixtx.cn(80端口),所以下面可以在创建一个nginx子配置文件将http的80端口重定向到https的443端口

注意: https网页内不允许发送http请求,浏览器在https网页中遇到http请求会报错并阻止http请求的发送,所以需要给后端项目也配置ssl证书开启https

5、nginx监听对应域名的80端口返回301强制重定向到该域名下的ssl443端口

新建/etc/nginx/conf.d/proxy.conf子配置文件重定向http80端口到https的443端口

server{
    listen 80;
    server_name haixtx.cn;
    #反向代理前台
    location / {
        return 301 https://$server_name$request_uri;
    }
}
server{
    listen 80;
    server_name admin.haixtx.cn;
    #反向代理后台管理系统
   location / {
        return 301 https://$server_name$request_uri;
   }
}
server{
   listen 80;
    server_name node.haixtx.cn;
    #反向代理后端
   location / {
       return 301 https://$server_name$request_uri;
  }
}

上面配置完后直接访问haixtx.cn也会重定向到https://haixtx.cn,也就是几种访问方式都会跳转到配置了ssl的项目去(开启https)

至此项目部署ssl就完成了

注意: 开启http2的前提是需要开启https,即http->https->http2nginx开启http2后要重启nginx才能生效

nginx -s stop && nginx

测试HTTP2是否开启成功

  • 开启了https的域名下不能再使用http请求了,也就是说开启了https的项目中的所有http请求都需要切换为https,不然会报错
  • 如何查看网站是否开启http有两种办法:

1、谷歌浏览器f12开启:Chrome=>F12=>Network=>Tab栏右键点击=>勾选Protocol

2、谷歌浏览器f12控制台输入并运行下面的代码

(function(){
  //验证网站是否使用了http2
  if(window.chrome && typeof chrome.loadTimes === 'function') {
    var loadTimes = window.chrome.loadTimes()
    var spdy = loadTimes.wasFetchedViaSpdy
    var info = loadTimes.npnNegotiatedProtocol || loadTimes.connectionInfo
    if(spdy && /^h2/i.test(info)) {
      return console.log('本站点使用了 http2')
    }
  }
  console.warn('本站点未使用 http2')
})()

标签:nginx,证书,开启,server,ssl,haixtx,https,http2
From: https://blog.csdn.net/minusing/article/details/137413273

相关文章

  • 免费SSL证书哪个更好
    当下为了实现网站的https访问,很多的站点都会在自己的网站上部署使用SSL证书。从2018年7月1日开始,Chrome将显示所有未使用SSL证书的网站标记为“不安全”,SSL证书,用于加密HTTP协议,也就是HTTPS。随着https的普及度逐渐,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL......
  • 线上扭蛋机小程序:开启虚拟世界的惊喜之旅
    随着移动互联网的飞速发展,各种创新的小程序不断涌现,给人们的生活带来了无限可能。其中,线上扭蛋机小程序以其独特的玩法和惊喜体验,迅速赢得了广大用户的喜爱。线上扭蛋机小程序是一种结合了虚拟世界和实物奖品的创新应用。用户只需在手机上轻轻一点,即可进入这个充满惊喜的虚拟......
  • openGauss与PostgreSQL对比测试SSL之自签名CA证书单向认证测试
    openGauss与PostgreSQL对比测试SSL之自签名CA证书单向认证测试本文测试自签名CA证书的单向认证:客户端只验证服务器证书的有效性,而服务器端不验证客户端证书的有效性。服务器加载证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。服务端证书的客户......
  • SSL证书续费操作流程
    市面上所有的SSL证书都不是长期的,一定的有效期。证书过期后,网站可能会无法访问且提出不安全警告。不仅会影响网站的信誉,还会导致数据泄露,给网站和用户带来风险。因此,需要及时对SSL证书进行续费!JoySSL,Digicert,Sectigo,GlobalSignSSL证书续费点击这里续费SSL证书的流程通......
  • 开启mmu后,call和jalr的区别
    在我写虚拟内存时遇到一些问题,jalrt0就是可以的,而callmain则没办法成功而且这里默认main是偏移前的地址,怪哉!!!让我们看看jalr和call(伪指令!!!)然后在链接后看看main的地址,主要看程序中main是不是偏移悬着的心也死了!!!查看一下ucore也有类似的问题,看看他们怎么解释  太......
  • 免费泛域名SSL证书申请
    二级域名使用较多时,一个个申请证书有点麻烦。泛域名证书一次性解决。申请SSL免费证书生成SSL最佳配置https://ssl-config.mozilla.org/Installcurlhttps://get.acme.sh|[email protected]=~/.acme.sh/acme.sh#证书机构二选一,acm3.0默认......
  • 安防视频监控/视频集中存储EasyCVR平台开启鉴权后设备列表不展示是为什么?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能AI分析接入等功......
  • 【免费SSL】免费一年的SSL证书
    一、SSL证书行业政策目前市面上绝大多数的免费SSL证书有效期都在3个月左右,而不是一年。例如,腾讯云在2024年4月后不再提供有效期为一年的免费证书,改为提供有效期为3个月的免费证书。同样,阿里云在2023年11月后也不再提供有效期为一年的免费证书,而是提供3个月的免费SSL证书。......
  • 事务和锁机制是什么关系? 开启事务就自动加锁了吗
    数据库锁因为数据库要解决并发控制问题。在同一时刻,可能会有多个客户端对同一张表进行操作,比如有的在读取该行数据,其他的尝试去删除它。为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念。锁的分类从对数据库操作的类型读锁(共享锁):针对同一块数据,多个......
  • mysql开启ip访问
    步骤1登录mysql 首先,我们需要登录MySQL数据库。可以使用MySQL的命令行工具或者图形界面工具,使用root用户登录。 mysql-uroot-p 2创建用户 我们可以创建一个新用户,并为该用户分配权限。假设我们要给IP地址为192.168.1.100的用户分配权限  CREATEUSER'newuser......