Docker搭建LNMP环境实战(07):安装nginx

1、模拟应用场景描述

假设我要搭建一个站点,假设虚拟的域名为:api.test.site,利用docker实现nginx+php-fpm+mariadb部署。

2、目录结构

2.1、dockers根目录

由于目前的安装是基于Win10+VMWare+CentOS虚拟机,同时已经安装了VMWareTools,并配置了虚拟目录,虚拟目录是仅仅是为了简化文件的传输,虚拟目录在CentOS里的全路径为:/mnt/hgfs/dockers,此目录为CentOS里的dockers根目录,读者可以根据需要自己指定dockers根目录。

2.2、演示项目目录结构

图1  dockers演示项目目录结构

图1 dockers演示项目目录结构

3、安装nginx

3.1、windows环境下修改hosts文件,实现虚拟域名的解析

在文件夹C:\Windows\System32\drivers\etc下找到hosts文件,并编辑,加入一行:

192.168.16.128 api.test.site

保存即可。其中:192.168.16.128为我现在VMware虚拟机里的centos的ip地址,请读者改成自己环境下的正确配置

3.2、编写nginx部署配置文件test_site_nginx.yml

在文件夹:/mnt/hgfs/dockers/test_site/compose下创建文件:test_site_nginx.yml,内容如下:
图2  nginx 部署配置文件内容

图2 nginx 部署配置文件内容

version: "3.5"
services:
    test_site_nginx:
        container_name: test_site_nginx
        image: nginx:1.13
        privileged: true
        restart: always
        networks:
            - test_site_network
        ports:
            - 80:80
            - 443:443
        volumes:
            - /mnt/hgfs/dockers/test_site/www:/var/test_site/www
            - /mnt/hgfs/dockers/nginx/conf.d:/etc/nginx/conf.d
        environment:
            - TZ=Asia/Shanghai
networks:
    test_site_network:
        name: test_site_network

3.3、站点默认页面及nginx支持HTTP协议访问的配置

1)编辑生产index.html文件,

进入目录: /mnt/hgfs/dockers/test_site/www;编辑生成index.html文件,内容为:

hello world!!!!!! From index.html

2)编辑生成nginx默认配置问default.conf

进入目录:/mnt/hgfs/dockers/nginx/conf.d;编辑生产default.conf。内容为:

server {
    listen      80;
    server_name  api.test.site;
    location / {
        root  /var/test_site/www;
        index  index.html index.htm;
    }
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /var/test_site/www;
    }
}

3)运行docker-compose命令进行部署

docker-compose -f test_site_nginx up -d

图3  docker-compose部署nginx

图3 docker-compose部署nginx

4)验证安装效果

在浏览器里访问:http://api.test.site,返回结果如下:
图4  验证通过http访问nginx 的80端口成功

图4 验证通过http访问nginx 的80端口成功

验证通过http协议访问nginx的80端口成功!

3.4、ssl证书的生成及nginx支持https协议访问的配置

3.4.1、ssl证书的生成
cd /mnt/hgfs/dockers/nginx/ssl

1)设置server.key

这里需要设置两遍密码(自己随便选一个密码输入两次):

openssl genrsa -des3 -out server.key 1024

图5  生成server.kry

图5 生成server.kry

会在当前目录下生成文件:server.key

2)参数设置

这里需要输入之前设置的密码:

openssl req -new -key server.key -out server.csr

由于是测试,可以随便输入一些信息就可以了,这样会生成文件:server.csr

3)写RSA秘钥

这里也要求输入之前设置的密码:

openssl rsa -in server.key -out server_nopwd.key

生成文件:server_nopwd.key,使用这个文件可以在应用时避免输入密码

4)获取私钥:

openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt

完成这一步之后就得到了我们需要的证书文件和私钥了:
图6  ssl证书及私钥文件

图6 ssl证书及私钥文件

3.4.2、配置nginx服务器,支持https访问

1)修改yml文件

修改test_site_nginx.yml文件,增加ssl目录的绑定
图7  在yml文件里增加ssl目录绑定

图7 在yml文件里增加ssl目录绑定

2)修改配置文件default.conf,添加ssl支持
图8  修改配置文件default.conf,添加ssl支持

图8 修改配置文件default.conf,添加ssl支持

红色框内为新增的配置项。修改后的文件内容如下:

server {
    listen      80;
    listen      443 ssl;
    server_name  api.test.site;
    #ssl on;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server_nopwd.key;
    # 指定密码为openssl支持的格式
    ssl_protocols  SSLv2 SSLv3 TLSv1.2;
    ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
    ssl_prefer_server_ciphers  on;  # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
    location / {
        root  /var/test_site/www;
        index  index.html index.htm;
    }
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /var/test_site/www;
    }
}

3)卸载和重新安装nginx

cd /mnt/hgfs/dockers/test_site/compose
docker-compose -f test_site_nginx down
docker-compose -f test_site_nginx up -d

4)测试https访问

浏览器里输入:https://api.test.site,会出现问题,返回结果为:
图9  https访问出现问题

图9 https访问出现问题

点击“高级”按钮,出现下面界面
图10  高级选项后的界面

图10 高级选项后的界面

点击红框中的链接 继续前往api.test.site,不知道什么原因,就是证书不对,但可以在“不安全”的模式下访问到首页:index.html,总算是可以访问了,也算基本成功吧!哪位有正确处理的方法,请赐教,谢谢。
图11  不安全的模式访问成功

图11 不安全的模式访问成功


上一篇 Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

状态压缩DP【蒙德里安的梦想】

题目描述 输入样例 1 2 1 3 1 4 2 2 2 3 2 4 2 11 4 11 0 0输出样例 1 0 1 2 3 5 144 51205题目链接 https://www.acwing.com/problem/content/293/ 分析 总方案数即为横放的方案数,因为横放完后列填补只会出现一种情况1表示横放,0表示竖放如果合并…

实验2-spark编程

实验目的 (1)通过实验掌握Spark的基本编程方法; (2)熟悉RDD到DataFrame的转化方法; (3)熟悉利用Spark管理来自不同数据源的数据。 实验内容 1.Spark基本操作 请参照…

OpenPLC_Editor 在Ubuntu 虚拟机安装记录

1. OpenPLC_Editor在虚拟机上费劲的装了一遍,有些东西已经忘了,主要还是python3 的缺失库版本对应问题,OpenPLC_Editor使用python3编译的,虚拟机的Ubuntu 18.4 有2.7和3.6两个版本,所以需要注意。 2. OpenPLC_Editor …

自动发卡平台源码优化版,支持个人免签支付

源码下载地址:自动发卡平台源码优化版.zip 环境要求: php 8.0 v1.2.6◂ 1.修复店铺共享连接时异常问题 2024-03-13 23:54:20 v1.2.5 1.[新增]用户界面硬币增款扣款操作 2.[新增]前台对接库存信息显示 3.[新增]文件缓存工具类[FileCache] 4.[新增]库存同…

基于单片机技术的门禁系统硬件设计研究

摘要:门禁系统在工业领域的应用十分广泛,如何利用单片机技术对门禁系统中的硬件进行管理与控制已经成为相关单位十分重要的研究课题之一。因此,文章设计了一套基于单片机技术的门禁系统硬件方案,旨在充分发挥单片机设备在自动化控制方面的优势,提高门禁系统的自动化水平。…

车载以太网AVB交换机 gptp透明时钟 5口 全千兆 SW1500

全千兆车载以太网交换机 一、产品简要分析 5端口千兆车载以太网交换机,包含4个通道的1000BASE-T1接口使用罗森博格H-MTD和泰科MATEnet双接口,1个通道1000BASE-T标准以太网(RJ45接口),可以实现车载以太网多通道交换,千兆和百兆车载…

【数据结构】带头双向链表的实现

👑个人主页:啊Q闻 🎇收录专栏:《数据结构》 🎉道阻且长,行则将至 前言 带头双向链表是链表的一种,相较于单链表的实现,其更为简单 一.初识带头双向循环链表 带头…

【漏洞分析】浅析android手游lua脚本的加密与解密(二)

反编译本人用到的是luajit-decomp,这里需要注意,luajit-decomp默认的lua版本为5.1,luajit版本为2.0.2,我们需要下载对应lua和luajit的版本,编译后替换luajit-decomp下的lua51.dll、luajit.exe、jit文件夹。反编译时需要注意的文件和文件夹: 这里需要下载版本为2.1.0-bet…

用 AI 编程-释放ChatGPT的力量

最近读了本书,是 Sean A Williams 写的,感觉上还是相当不错的。一本薄薄的英文书,还真是写的相当好。如果你想看,还找不到,可以考虑私信我吧。 ChatGPT for Coders Unlock the Power of AI with ChatGPT: A Comprehens…

SAP-CO主数据之统计指标创建-<KK01>

公告:周一至周五每日一更,周六日存稿,请您点“关注”和“在看”,后续推送的时候不至于看不到每日更新内容,感谢。 目录 一、背景: 成本中心主数据创建:传送门 成本要素主数据创建&#xff1…

OpenHarmony实战开发-滑动容器组件Swiper的使用

介绍 本篇Codelab主要介绍了滑动容器组件Swiper的几种常见的应用场景,包括顶部导航、轮播图以及视频滑动播放。 相关概念 Swiper:滑动容器,提供子组件切换滑动的能力。Stack:堆叠容器,子组件按照顺序依次入栈&#x…

康耐视visionpro-CogFindLineTool工具详细说明

CogFindeLineTool功能说明: 检测图像的直线边缘,实现边缘的定位、测量。 CogFindeLineTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogFindLineTool工具 ②.添加输入图像,点击鼠标右键“链接到”选择输入图像或以连线拖拽的方式选择相应输入图像 ③. 所选空间名…

振弦采集仪在预防地质灾害监测中的作用与应用前景

振弦采集仪在预防地质灾害监测中的作用与应用前景 振弦采集仪(String Vibrating Sensor,简称SVM)是一种用于地质灾害监测的重要仪器,它通过测量地面振动信号来预测和预警地质灾害的发生。SVM的作用在于提供实时、准确的地质灾害监…

威联通安装Kafka

最近在学习 Kafka 的知识,遇到一些问题网上搜到的信息不全。想要在本地安装一个 Kafka 进行验证,想到了之前买的 Nas 就开始折腾。 用 Docker 的方式安装 Kafka 现在的 Nas 很多都支持 Docker,我买的也支持。威联通的 Docker 叫 Container S…

AugmentedReality之路-通过蓝图启动AR相机(2)

本文实现打开AR相机和关闭AR相机功能,在主界面点击Start AR按钮后打开AR相机,在主界面点击Stop AR按钮后关闭AR相机 1、启动AR相关插件 通过Edit->Plugins启用AugmentedReality下面的所有插件 2、自定义Pawn 在Content->ARBase目录右键&…

如何降低 BlueNRG-LPS 的开机峰值电流

1. 前言 BlueNRG 系列存在开机瞬间会出现很大的峰值电流的现象,预计有 20ma 左右。针对此现象,经常有客户询问该峰值电流会不会导致设备工作异常?会不会导致电池使用寿命缩短(考虑到一般纽扣电池能承受的峰值电流大概在 15ma 左右…

B64843-4M 1553B总线 控制时序、寄存器介绍。

B64843-4M系统架构 注: 1 、 CPU ADDRESS LATCH 信号由带地址 / 数据复用总线的处理器提供,对不带地址 / 数据复用总线的处理器,CPU ADDRESS LATCH 信号与 3.3V 信号连接。 2、如果 POLARITY_SEL="1" , RD/信号为高时读使能,为低时写使POLARITY_S…

Codeforces Round 937 (Div. 4)

Codeforces Round 937 (Div. 4) Codeforces Round 937 (Div. 4) A. Stair, Peak, or Neither? 题意&#xff1a;略 思路&#xff1a;照着题模拟&#xff1b; AC code&#xff1a; void solve() {int a, b, c; cin >> a >> b >> c;if (a < b) {if (…

【一种基于改进A*算法和CSA-APF算法的混合路径规划方法】—— 论文阅读

论文题目&#xff1a;A Hybrid Path Planning Method Based on Improved A∗ and CSA-APF Algorithms 1 摘要 大问题&#xff1a;复杂动态环境下全局路径规划难以避开动态障碍物&#xff0c;且局部路径容易陷入局部最优的问题 问题1&#xff1a;针对A*算法产生冗余路径节点和…

基于Python的电商特产数据可视化分析与推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 利用网络爬虫技术从某东采集某城市的特产价格、销量、评论等数据&#xff0c;经过数据清洗后存入数据库&#xff0c;并实现特产销售、市场占有率、价格区间等多维度的可视化统计分析&#xff0c;并…