百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

HTTPS配置实战(https配置文件)

nanshan 2025-06-18 23:06 32 浏览 0 评论

原因

现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大家可以看我的这篇文章HTTPS连接过程。

使用http访问是正常的:

使用https访问报错:

环境

目前环境是:Centos7.6

Web服务:GoLang

Web服务端口号:8080

操作

因为Web服务是GoLang写的,所以思路是搭建Nginx反向代理,Nginx上配置证书,将请求代理到Go服务上。

申请证书

申请证书的方案很多,可以从Let's Encrypt申请,因为我的域名是从腾讯云上买的,所以直接在腾讯云上申请免费证书

位置:
https://console.cloud.tencent.com/ssl

查看域名验证状态,一般需要5分钟左右才能通过,如果报错,可以过会重新验证,验证状态成功后

申请完成后,可以下载证书

安装Nginx

安装Nginx的过程中,要记得把ssl模块一起安装上,否则会报错nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in
/usr/local/nginx/conf/nginx.conf

yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install

安装完毕后,在/usr/local/nginx/目录下会有nginx的相关文件

上传证书

  1. 在云服务器上创建ssl目录,位置为/usr/local/nginx/ssl
  2. 将申请到的证书上传到该位置,共两个文件,一个crt,一个key

Nginx配置

编辑Nginx配置,nginx.conf

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    include     /usr/local/nginx/conf/vhost/*.conf;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
               listen 443 ssl;
        server_name  www.asap2me.top;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
              ssl_certificate         /usr/local/nginx/ssl/asap2me.crt;
              ssl_certificate_key     /usr/local/nginx/ssl/asap2me.key;
            ssl_session_cache  shared:SSL:10m;
              ssl_session_timeout  5m;
            ssl_protocols  TLSv1.2 TLSv1.1 TLSv1;
       ssl_ciphers  HIGH:!aNULL:!MD5;
           ssl_prefer_server_ciphers   on;
       # location / {
       #     root   html;
       #     index  index.html index.htm;
       # }
                location / {
                   proxy_set_header Host  $host;
               proxy_set_header   X-Real-IP        $remote_addr;
             proxy_set_header X-Forwarded-For  $http_x_forwarded_for;
                proxy_pass http://go_backend;
               }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
 
}

对于这个配置,有几个地方需要说明一下:

  1. listen 443 ssl; 监听443端口
  2. include /usr/local/nginx/conf/vhost/*.conf; 创建vhost目录,里面存放其他配置文件
  3. ssl配置 ssl_certificate /usr/local/nginx/ssl/asap2me.crt;
    ssl_certificate_key /usr/local/nginx/ssl/asap2me.key;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
  4. 请求转发 location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $http_x_forwarded_for;
    proxy_pass http://go_backend;
    }

go_backend的配置如下,go_back_upstream.conf

upstream go_backend{
    server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=10s;
}

验证

现在让我们验证一下效果:

http正常

https正常

总结

将http升级为https,分如下几步

  1. 申请证书
  2. 将证书存放到代理机器上
  3. 不同代理,如Nginx、Apache、Tomcat,做对应的配置
  4. 验证

资料

  1. 快速签发 Let's Encrypt 证书指南https://www.cnblogs.com/esofar/p/9291685.html
  2. HTTPS 免费证书申请和应用https://cloud.tencent.com/document/product/627/41141?from=information.detail.%E8%85%BE%E8%AE%AF%E4%BA%91%E4%B8%8B%E8%BD%BDhttps%E8%AF%81%E4%B9%A6
  3. 域名型(DV)免费证书申请流程https://cloud.tencent.com/document/product/400/6814
  4. 后端服务轻松切换HTTPShttps://www.songma.com/news/txtlist_i25496v.html
  5. CentOS7安装Nginxhttps://www.cnblogs.com/boonya/p/7907999.html
  6. https://www.cnblogs.com/ghjbk/p/6744131.html ngx_http_ssl_module

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:
https://shidawuhen.github.io/

往期文章回顾:

技术

  1. Go通道实现原理
  2. Go定时器实现原理
  3. HTTPS连接过程
  4. 限流实现2
  5. 秒杀系统
  6. 分布式系统与一致性协议
  7. 微服务之服务框架和注册中心
  8. Beego框架使用
  9. 浅谈微服务
  10. TCP性能优化
  11. 限流实现1
  12. Redis实现分布式锁
  13. Golang源码BUG追查
  14. 事务原子性、一致性、持久性的实现原理
  15. CDN请求过程详解
  16. 常用缓存技巧
  17. 如何高效对接第三方支付
  18. Gin框架简洁版
  19. InnoDB锁与事务简析
  20. 算法总结

读书笔记

  1. 资治通鉴
  2. 敏捷革命
  3. 如何锻炼自己的记忆力
  4. 简单的逻辑学-读后感
  5. 热风-读后感
  6. 论语-读后感
  7. 孙子兵法-读后感

思考

  1. 项目流程管理
  2. 对项目管理的一些看法
  3. 对产品经理的一些思考
  4. 关于程序员职业发展的思考
  5. 关于代码review的思考
  6. Markdown编辑器推荐-typora

相关推荐

Linux 的磁盘系统,和你了解的Windows差别很大

我的C盘去哪了?一个系统,如果没有存储,那么也就不能称之为系统。存储性是一个完整系统的重要组成部分。例如AWS最开始的服务就是S3(用来存储数据的云服务),足以见得存储对于一个应用平台是多么的重要。...

一文读懂 Linux 硬盘挂载:从问题到解决方案

各位互联网大厂的后端开发伙伴们!在咱们日常工作中,操作Linux系统是常有的事儿吧。你们有没有遇到过这样的场景:新添加了一块硬盘,满心欢喜准备用来存储重要数据或者部署新的应用服务,却突然发现不知道...

硬盘分区(硬盘分区格式)

 磁盘(硬盘)分区,可以分C、D、E等分区,大家可能都会用,会根据自已的需要确定所需的空间,但分区是如何工作的呢,内容如下。Windows中有3类:MBR分区:MasterBootRecord,也...

parted命令工具分区介绍(particle命令)

linux系统磁盘分区通常可以使用fdisk和parted命令,当分区大小小于2TB的时候,两种皆可以使用,当分区大于2TB的话,就需要用parted分区。以下介绍parted命令相关使用,以sdb为...

Linux 服务器上查看磁盘类型的方法

方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。NAME列显示设备名称(如sda、nvme0n1)。TR...

Linux分区命令fdisk和parted使用介绍

摘要:一般情况下,Linux分区都是选择fdisk工具,要求硬盘格式为MBR格式,能支持的最大分区空间为2T。但是目前在实际生产环境中使用的磁盘空间越来越大,呈TB级别增长;而常用的fdisk这个工具...

linux 分区原理与名词解释(linux操作系统中的分区类型)

分区的意义将磁盘分成几份,每份挂在到文件系统的那个目录在linux里的文件系统Ext2:早期的格式,不支持日志功能Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了Ext4:针对e...

linux 分区合并(linux合理分区)

查看虚拟机当前磁盘挂载情况fdisk-l选择磁盘fdisk/dev/sda查看磁盘分区情况p重新选择分区n选择主分区p保存w创建物理卷pvcreate/dev/sda3查看物理卷信息pvdi...

如何在 Linux 系统中永久禁用交换分区 ?

Linux操作系统中的交换分区或交换文件充当硬盘上的临时存储区域,当物理内存(RAM)满时,系统使用该存储区域。它用于交换较少使用的内存页,这样系统就不会因为运行应用程序而耗尽物理内存。随着技术的发...

Linux 如何知道硬盘已用多少空间、未用多少空间

刚出社会时,去了一家公司上班,老板为了省钱,买的服务器是低配的,硬盘大小只有40G,有一次网站突然不能访问了,排查半天才知道原来服务器的硬盘空间已用完,已无可用空间。第一步是查看硬盘的使用情况,第二步...

用Linux系统管理磁盘空间 就该这么来

要想充分有效的管理使用Linux系统中的存储空间,用户必须要做的就是双管齐下,一边扩充空间一边限制空间。不得不说的就是很多时候磁盘空间就像水资源,需节制水流。说到要如何实现限制空间就离不开使用LVM技...

Windows 11 磁盘怎么分区?(windows11磁盘怎么分区)

Windows11磁盘分区技术解析与操作指南:构建高效存储体系一、磁盘分区的技术本质与系统价值磁盘分区作为存储系统的基础架构,通过逻辑划分实现数据隔离与管理优化。Windows11采用NTF...

linux上创建多个文件分区,格式化为 ext2、ext3、ext4、XFS 文件

以下是在Linux系统上创建多个20GB文件分区并格式化为不同文件系统的分步指南:步骤1:创建基础文件(4个20GB文件)bash#创建4个20GB稀疏文件(实际占用空间随写入量增长)ddif=/...

救命的U盘低格哪家最强?(低格优盘)

周二时有位童鞋留言说U盘之前做过引导盘,现在格式化不了,用各种工具都不行,而且因为U盘厂商的关系,查不到U盘主控,无法量产恢复,特来求助。小编花了点时间特意弄坏一个U盘分区,终于试出方法了,特来分享一...

Linux 查看硬件磁盘存储大小和磁盘阵列(RAID)的组合方式

一、查看硬件磁盘存储大小查看所有磁盘信息:#lsblk该命令会列出所有磁盘(如/dev/sda、/dev/nvme0n1)及其分区和挂载点。查看磁盘总容量:fdisk-l#或parted-...

取消回复欢迎 发表评论: