我是如何使用docker安装nginx并配置https服务的

news2024/11/23 15:09:59

文章目录

  • 前言
  • 一、前期准备
    • 1、备案好的域名
    • 2、安装nginx
      • 2.1 下载nginx的docker镜像
      • 2.2 新建用于映射的目录
      • 2.3 从容器中拷贝nginx配置
      • 2.4 启动 nginx
  • 二、配置步骤
    • 1、申请免费的证书
    • 2、下载证书
    • 3、把证书上传至服务器
    • 4、配置 .conf 文件
      • 4.1 后端接口服务 api.conf 配置
      • 4.2 前端项目 lms.conf 配置
  • 总结


前言

嗨,大家好,我是希留,一个被迫致力于全栈开发的老菜鸟。

因为最近新学习了个uni-app的项目。想要运行成小程序,但微信小程序的接口都是需要https请求才能访问到。这一下就难住了,该怎么把我的接口服务配置成可以https访问呢?

我的域名是腾讯云的域名,也已经备案好了的。正好可以申请免费的域名型(DV)SSL 证书,而且可以免费申请20个,够我用了。

这篇文章就来介绍一下,我是怎么使用docker安装nginx并配置https服务的。


一、前期准备

1、备案好的域名

想要申请SSL正书,就需要有个备案好的域名(以腾讯云为例)。想了解个人域名怎么备案的可以移步这篇文章了解一下👉个人域名备案详细流程(图文并茂)

2、安装nginx

为了图方便,这里是使用docker安装nginx的。所以需要具备一些docker的基础知识,相信会点开阅读的朋友也是对docker有一定了解的,这里就不啰嗦怎么安装docker了。

2.1 下载nginx的docker镜像

docker pull nginx

2.2 新建用于映射的目录

了解docker的都知道,docker容器启动后,容器内部有自己的文件系统,配置文件也在里面。因此我们需要把配置文件挂载到容器外部,也就是我们的linux服务器上。

例如我是在根目录下新建了如下目录:

mkdir /mydata/nginx/html -p
mkdir /mydata/nginx/log -p
mkdir /mydata/nginx/cert -p

2.3 从容器中拷贝nginx配置

  • (1)先运行一次容器(为了拷贝配置文件)。
docker run -p 80:80 --name xiliu-nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx
  • (2)将容器内的配置文件拷贝到指定目录。
docker container cp xiliu-nginx:/etc/nginx /mydata/nginx/
  • (3)进入 /mydata/nginx/ 目录下,修改文件名称,把名称改为 conf。
mv nginx conf
  • (4)终止并删除容器。
# 停止容器
docker stop xiliu-nginx
# 删除容器
docker rm xiliu-nginx

2.4 启动 nginx

经过2.3的步骤后,我们在linux服务器上就得到了nginx相关的配置文件了,接下来只需要挂载这些目录。

这样我们每次需要修改nginx的配置文件的时候,只要修改挂载到外部的文件,容器内的文件也会相应改变,能省很多功夫。(强烈建议挂载!!!

docker run -p 80:80 -p 443:443 --name xiliu-yz-nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-v /mydata/nginx/cert:/etc/nginx/cert \
-d nginx

启动完成后, 输入 docker ps 命令,可以看到正在运行的 docker 容器。当 nginx 启动成功后,我们只需要修改配置文件,就可以实现多个域名和https访问的需求啦。

在这里插入图片描述

二、配置步骤

1、申请免费的证书

进入腾讯云的控制台,找到 SSL证书,点击进入,然后申请免费版证书。需要注意的是:(免费版的证书只能是1个域名1个证书,不能通配。假如你是添加了多个子域名,则每个子域名都需要申请1个证书,腾讯云最多支持免费申请20个证书。)

申请步骤如下图所示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、下载证书

因为是在Nginx里面配置的,所以下载 Nginx类型的证书

在这里插入图片描述
在这里插入图片描述

3、把证书上传至服务器

下载到本地的证书压缩包解压后,把后缀名为 .key 和 .crt 的两个文件通过ftp等工具上传至服务器。最好放在服务器安装nginx的目录下。我的nginx是用docker安装的,所以放在了映射的目录里。如下图所示:
在这里插入图片描述
在这里插入图片描述

4、配置 .conf 文件

证书上传好之后,就可以配置 https 了。nginx的配置文件这里有必要说明一下(因为我的项目是前后端分离的项目,有多个域名。所以是拆分成了api.conf文件和lms.conf文件

nginx.conf文件只做一个引入

在这里插入图片描述
真正的配置是在api.conf文件和lms.conf文件。
在这里插入图片描述

4.1 后端接口服务 api.conf 配置

  • 配置如下所示,需要注意的是证书的路径(是nginx容器里面的路径,不是服务器的映射目录)
server {
    listen 80;
    listen 443 ssl;    #表示监听443端口即https
    server_name  api.xiliu.online; #域名
    ssl_certificate /etc/nginx/cert/api.xiliu.online_bundle.crt;   #证书文件路径
    ssl_certificate_key /etc/nginx/cert/api.xiliu.online.key;      #证书私钥文件路径
    ssl_session_timeout 5m;                                         #5分钟session会话保持
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    
    location / {
    	proxy_pass   http://xx.xx.xx.xx:xxxx; #接口服务的ip地址
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • 配置完成后,重启 nginx 容器,使用 https 访问接口地址,如下图所示,可以成功访问。
    在这里插入图片描述

4.2 前端项目 lms.conf 配置

  • 上面只是配置的api接口服务的https,我们把前端项目也配置一下。因为我的前端项目有两个子域名,所以需要配置两个server ,具体配置如下所示:
server {
    listen 80;
    listen 443 ssl; #侦听443端口,用于SSL
    server_name yzht.xiliu.online; #域名
    ssl_certificate /etc/nginx/cert/yzht.xiliu.online_bundle.crt;   #证书文件路径
    ssl_certificate_key /etc/nginx/cert/yzht.xiliu.online.key;      #证书私钥文件路径
    ssl_session_timeout 5m;                                         #5分钟session会话保持
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    location / {
        root   /usr/share/nginx/html; #代理目录
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /prod-api { #反向代理
        rewrite ^.+prod-api/?(.*)$ /$1 break;
        proxy_pass https://api.xiliu.online;
            
   }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
  • 配置完成后,重启 nginx 容器,使用 https 访问接口地址,可以成访问到页面,也能成功调用api的接口。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

总结

以上就是本文的全部内容了,感谢大家的阅读。本文介绍了使用docker安装nginx服务,并使用腾讯云免费的SSL证书配置项目支持https访问。

如果觉得文章对你有帮助,还不忘帮忙点赞、收藏、关注、评论哟,您的支持就是我创作最大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据智仓功能介绍(四)

字段设置 使用场景介绍 字段设置,即在数据智仓中,对输入上一数据处理节点的字段进行显示和隐藏、排序、重命名等操作。 操作配置 对数据类型的转换,主要用户复杂数据的处理的情况下 ,例如某个字段是JSON ,那么通过数…

用 JS 解析 excel 文件需要分几步

八月长江万里晴,千帆一道带风轻。 大家好,我是嘿嘿,今天来聊一聊如何使用 JS 来解析 excel 文件,当然不是直接使用 exceljs、sheetjs 之类的库,那就没意思了,而是主要说一下 JS 解析 excel 表格是如何实现的…

STM32F4 IAP 跳转 APP问题

1. 概念 IAP 的作用,网上其他资料已经有很多介绍了,这里放一个链接,不进行深入的介绍。本文的关注重点是Bootloader在跳转APP程序中出现的问题。 IAP的实现原理讲解以及中断向量表的偏移 2. 程序 本人主要做应用层的开发,所有Boo…

深蓝学院-多传感器融合定位课程-第7章-基于滤波的融合方法I

专栏文章: 深蓝学院-多传感器融合定位课程-第1章-概述_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第2章-3D激光里程计I_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第…

自学100天,零基础转行软件测试,我要以更好的姿态奔赴下一场山海~

三年大专一场空 专业是电子商务,18年毕业,当时在报考时时觉得电子商务挺高大上的,觉得电商肯定会有前途,以后毕业肯定好找工作,跟大多数人一样,我开始幻想我以后毕业以后的纸醉金迷的生活,我以…

落地 DevOps,探索高效研发运营一体化解决方案

前言与概述 伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理&…

华为路由器 静态路由

需求&#xff1a; 实现 PC1 与 PC2 互通 1、拓扑图 主机IP掩码网关PC1192.168.10.10255.255.255.0192.168.10.1PC2192.168.40.40255.255.255.0192.168.40.1PC3192.168.30.30255.255.255.0192.168.30.1 2、R1 路由器 <Huawei>undo ter mo Info: Current terminal monit…

c#调用c++捕获SEH异常

C代码&#xff1a; extern "C" __declspec(dllexport) int ExceptionTest() { int* pointer NULL;*pointer 100; return 100; }c#代码&#xff1a; class C_Sharp_Call_C__{[DllImport("testDll.dll", CallingConvention CallingConvention.Cdecl)]p…

SpringMVC:Spring与SpringMVC各自bean加载控制(2)

问题提出&#xff1a;学习Spring技术的时候在config目录下创建了一个配置类SpringConfig。现在学习SpringMVC技术在config目录下又创建一个SpringMvcConfig配置类。这两个配置类都需要加载资源&#xff0c;那么它们分别都需要加载哪些内容? 目录结构&#xff1a; config目录存…

[附源码]Python计算机毕业设计房屋租赁管理系统设计Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

完全可用的迁移docker目录方案(centos/redhat)

完全可用的迁移docker目录方一、前提二、具体操作如下&#xff1a;2.1 先模拟运行一个 docker mysql2.2 先停docker进程2.3 新建存储目录2.4 修改启动默认的目录2.4.1 使用软链接(推荐)2.4.2 修改/etc/docker/daemon.json &#xff08;推荐&#xff09;2.4.3 指定容器启动参数&…

【深度学习】PyTorch深度学习实践 - Lecture_12_Basic_RNN

文章目录一、RNN介绍1.1 RNN为什么能处理有序数据&#xff1f;1.2 RNNCell内部剖析二、How to use RNNCell In PyTorch2.1 参数分析2.2 PyTorch代码实现三、How to use RNN In PyTorch3.1 参数分析3.2 NumLayers3.3 PyTorch代码实现3.4 其他参数四、Example1&#xff1a;Using …

fpga实操训练(锁相环pll)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 锁相环pll是fpga区别于stm32、soc很重要的一个特征。通常来说&#xff0c;输入的晶振一般是25m、50m这样的&#xff0c;不一定能满足功能的开发。这…

QT—QList与QLinkedList类的常用方法

QList<T>维护了一个指针数组&#xff0c;数组元素指向每一个链表项&#xff0c;因此QList<T> 提供了基于下标的快速访问。QLinkedList<T>是一个链式列表&#xff0c;不能使用下标访问&#xff0c;与QList相比&#xff0c;当对一个很大的列表进行插入操作时&a…

最近爆火chatGTP是人工智能还是人工智障?

关于chatGTP和一些话题? OpenAI 发布了 ChatGPT&#xff0c;是一个可以对话的方式进行交互的模型&#xff0c;因为它的智能化&#xff0c;得到了很多用户的欢迎。 ChatGPT是InstructGPT的兄弟模型&#xff0c;可以以对话的形式与用户交互&#xff0c;这使得ChatGPT能够回答问…

linux第五章---git的基本操作

git作为代码管理仓库&#xff08;版本管理工具&#xff09;&#xff0c;主要有GitHub和Gitee等等。&#xff0c;大家可以登录官网注册&#xff0c;Github经常访问不到&#xff08;看运气&#xff09;&#xff0c;Gitee作为国内比较火的一个平台(较商业化)。 1.git基本概念 工…

Java连接Access数据库改成MySQL连接数据库

升级诉求&#xff1a;Java连接Access已经算是过时的产物了&#xff0c;一般作为存储服务的应用在Java界比较常用的还是MySQL&#xff0c; 当然还有Oracle数据库。这里要讲的就是连接MySQL数据库了。 就是因为有了SQL标准&#xff0c;各大厂商实现SQL语句基本上大同小异&#xf…

基于Python完成CA系统的设计和实现(附源码)

CA 系统开发 一、CA系统的设计和实现 ​ 注&#xff1a;CA&#xff0c;Certificate Authority&#xff0c;电子认证服务或机构&#xff0c;为电子签名相关各方提供真实性和可靠性验证&#xff0c;是负责发放和管理数字证书的权威机构&#xff0c;并作为电子商务交易中受信任的…

基于Feign远程调用

RestTemplate方式调用存在的问题 先看看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 1、代码可读性差&#xff0c;编程体验不统一&#xff1b; 2、参数复杂URL难以维护&#xff1b; 为了解决这些问题&#xff0c;所以引入了Feign&am…

QT QStackedWidget 控件 使用详解

本文详细的介绍了QStackedWidget控件的各种操作&#xff0c;例如&#xff1a;新建界面、页面切换、添加页面、addWidget、count、currentIndex 、currentWidget、indexOf、insertWidget、removeWidget、widget、setCurrentIndex 槽函数、setCurrentWidget 槽函数、currentChang…