当前位置: 首页 > news >正文

Docker 安装与配置 Nginx

摘要

1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。

2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。

2、同时,探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法

3、此外,文章还涵盖了 Docker 的基本操作,包括镜像创建、数据卷管理及容器的常规使用。

一、安装Nginx

1、镜像
1.2、拉取镜像
docker pull nginx:stable# stable: 镜像标签,stable 指最新稳定版本。
# latest: 指最新版本。(如果不写,则默认拉取 latest 版本)
# 示例默认版本:docker pull nginx
1.3、查看镜像
docker images
1.4、删除镜像
docker rmi nginx:stable

2、volume 数据卷
2.2、创建 volume
docker volume create nginxConfig
docker volume create nginxHtml
docker volume create nginxLog
2.3、查看 volume
# ls:列出所有的 volume
docker volume ls# inspect:显示一个或多个 volume 的信息
docker volume inspect nginxConfig# 执行 inspect 后的参数说明
[{"CreatedAt": "2024-10-02T21:41:48+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/nginxConfig/_data","Name": "nginxConfig","Options": null,"Scope": "local"}
]# Driver: 表示使用的驱动程序,这里是"local",表示使用本地驱动程序。
# Labels: 标签,用于对卷进行分类或标记。
# Mountpoint: 挂载点,表示卷在主机上的挂载路径。
# Name: 卷的名称。
# Options: 选项,用于配置卷的一些参数。
# Scope: 作用域,表示卷的作用范围,这里是"local",表示只在本地可见
2.4、删除 volume
# prune:删除未使用的 volume
docker volume prune# rm:删除一个或多个指定的 volume
docker volume rm nginxConfig

2.5、创建后的目录结构如下

3、容器
3.2、创建容器
docker run 

–name nginxOne
-p 80:80
-v nginxHtml:/usr/share/nginx/html
-v nginxConfig:/etc/nginx
-v nginxLog:/var/log/nginx
-d nginx:stable

# --name nginxOne:为容器指定一个名称为 nginxOne。# -p 80:80:将主机的 80 端口映射到容器的 80 端口,这样可以通过主机的80端口访问 Nginx 服务(左侧为宿主机端口)。# -v 数据卷挂载,将上一步创建好的 volume 挂载到 Nginx 容器中。# -v nginxHtml:/usr/share/nginx/html:将 nginxHtml 卷挂载到容器的 /usr/share/nginx/html 目录,用于存储 Nginx 的静态网页文件。# -v nginxConfig:/etc/nginx:将 nginxConfig 卷挂载到容器的 /etc/nginx 目录,用于存储 Nginx 的配置文件。# -v nginxLog:/var/log/nginx:将 nginxLog 卷挂载到容器的 /var/log/nginx 目录,用于存储 Nginx 的日志文件。# -d:表示以后台模式运行容器。# nginx:stable:指定要运行的镜像名称为 nginx 版本为 stable(第一步拉取的镜像)。

3.2.2、容器创建成功后,nginxConfig 数据卷中的文件理应大致如下:

3.3、查看容器
# 查看所有状态的容器
docker ps -a# 查看正在运行的容器
docker ps# 指定查看正在运行的容器
docker ps | grep nginxOne# 指定查看正在运行的容器
docker ps --filter name=nginxOne# 如果正在运行的容器中没有 nginxOne,那么你的容器多半创建失败了。
# 需要执行删除容器,再重新创建。
# 执行 logs 查看报错信息。
docker logs nginxOne 
3.3、删除容器
# 停止容器(运行中的容器需先停止再删除)
docker stop nginxOne# 删除容器
docker rm nginxOne# 删除容器(运行中的容器也会被删除)
docker rm -f nginxOne
4、防火墙
4.2、开放指定端口
# nginx 默认 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
4.3、刷新防火墙
firewall-cmd --reload
4.4、查看已开放端口
firewall-cmd --zone=public --list-ports

ps:如果使用的是云服务器,记得去放行防火墙安全组;虚拟机玩家无视这条。

5、测试

5.2、浏览器输入服务器 IP 地址,看见 nginx 欢迎页面,即完成安装。

5.3、如有疑问请留言、私信或添加最下方联系方式。

6、默认配置文件详解
# 查看配置文件
cat /var/lib/docker/volumes/nginxConfig/_data/conf.d/default.conf# listen 80:监听 80 端口。
# listen [::]:80:同时支持 IPv4 和 IPv6 。
# server_name localhost:监听你的 ip。server {listen       80;listen  [::]:80;server_name  localhost;
#-------------------------分割线---------------------------------------# access_log:访问日志,记录所有访问这个服务器的请求。日志文件位置是     /var/log/nginx/host.access.log,使用的日志格式是main(通常在全局nginx.conf中定义)。#access_log  /var/log/nginx/host.access.log  main;
#-------------------------分割线---------------------------------------# location /:表示处理根路径及其所有子路径的请求。# root /usr/share/nginx/html:当请求时,Nginx从/usr/share/nginx/html目录寻找文件。# index index.html index.htm:当请求时,Nginx从/usr/share/nginx/html目录下寻找到文件后,返回 index.html 或 index.htm 页面到浏览器。location / {root   /usr/share/nginx/html;index  index.html index.htm;}
#-------------------------分割线---------------------------------------# 根据响应码,返回指定的 html 文件到浏览器。#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   /usr/share/nginx/html;}
#-------------------------分割线---------------------------------------# location ~ .php$:以 .php 结尾的请求,代理到 proxy_pass 地址。# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ .php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ .php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /.ht {#    deny  all;#}
}

二、配置 Nginx(域名 HTTPS)

ps:必要环境:

1、云服务器。

2、域名,并解析到此服务器。 qwqw

3、域名的 SSL 证书。

1、创建新容器
# 停止容器(否则端口占用)
docker stop nginxOne# 或者删除容器
docker rm -f nginxOne# 创建容器(注意:若要支持 Https 访问,需要再映射 443 端口。
docker run 

–name nginxTwo
-p 443:443
-p 80:80
-v nginxHtml:/usr/share/nginx/html
-v nginxConfig:/etc/nginx
-v nginxLog:/var/log/nginx
-d nginx:stable

# 查看是否成功运行、浏览器再测试是否能访问
docker ps | grep nginxTwo
2、SSL 文件
# 新建目录、再将 pem、key 放入此目录
mkdir -p /var/lib/docker/volumes/nginxConfig/_data/ssl
3、配置修改

3.2、Nginx 一共分为 “主配置文件” 和 “站点配置目录”。

  • 主配置文件(全局配置):

    • 位置:/etc/nginx/nginx.conf
    • 通常不建议频繁修改 nginx.conf
    • 更改情况:调整工作进程数、修改全局的日志设置、启用或禁用某些全局模块等。
  • 站点配置文件:

    • 位置:/etc/nginx/conf.d/default.conf
    • 更改情况:修改服务器监听的端口号、修改站点的根目录、添加反向代理配置等。
  • 修改 default.conf 配置文件

    • 首先,我们通过官方文档知道了 nginx 容器的配置文件目录地址。
    • 随后,我们创建容器时,已经成功将数据卷 “nginxConfig” 挂载到了 “etc/nginx”
    • 再后,通过 docker volumeinspcet nginxConfig 命令,我们知道 “nginxConfig” 数据卷在本地的 “/var/lib/docker/volumes/nginxConfig/_data” 目录下。
    • 最后,我们修改 “/var/lib/docker/volumes/nginxConfig/_data/conf.d/default.conf ” 即可。
    • 修改:
      •     # 如果没有 vim,就用 vi; vi 用不了的话,就在电脑创建 default.conf 文件,配置好后上传服务器替换原文件;如果都不行的话,来跟我学炒饭吧。vim /var/lib/docker/volumes/nginxConfig/_data/conf.d/default.conf
        
  • 更改后的内容

    •     # 基本的配置,线上正式环境还需要增加其他配置server {# 监听 443 端口和开启声明 SSLlisten       443 ssl;  listen  [::]:443 ssl;# 你的域名server_name test.com;# 注意:容器与宿主机是完全隔离的,# 我们指向的路径要填写容器中的路径,而不是宿主机配置文件的路径。# 你别问 “为什么证书文件在宿主机中,配置路径却写容器的路径,还能读取到宿主机中的文件”# 因为爱啊(数据卷挂载)。# SSL证书配置ssl_certificate     /etc/nginx/ssl/sun.pem;ssl_certificate_key /etc/nginx/ssl/sun.key;# 不解释写法(上面有)location / {root   /usr/share/nginx/html;index  index.html index.htm;}}server {listen       80;listen  [::]:80;# 你的域名server_name test.com;# HTTP请求重定向到HTTPS(要是有人非要输入 http 访问,强制重定向到 https)return 301 https://$server_name$request_uri;}# 后端服务配置:# 如果请求的 url 前缀为 api,# 那么该请求将被转发到本地的 5210 端口,也就是后端服务。(需要保证后端服务部署在该服务器,并且端口相同)# location ^~/api/ {#        proxy_pass http://127.0.0.1:5210; #    }
      
  • 语法校验

    •     # 检测 nginx 配置是否正确docker exec nginxTwo nginx -t
      
  • 重载配置

    •     docker exec nginxTwo nginx -s reload
      
  • 防火墙(记得放开云服务器的安全组)

    •     # 开放 443 端口firewall-cmd --zone=public --add-port=443/tcp --permanent# 重新加载firewall-cmd --reload 
      
4、测试

相关文章:

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时,探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外,文章还涵…...

Oracle常见语法

一、求交集 SELECT column1, column2 FROM table1 INTERSECT SELECT column1, column2 FROM table2;INTERSECT 操作符是 Oracle 和一些其他数据库(如 PostgreSQL 和 SQL Server)特有的集合操作符,在 MySQL 中并不直接支持。MYSQL同效果代码&a…...

在Vue3中使用Echarts的示例 两种方法

在Vue 3中使用ECharts可以通过两种主要方法实现:全局安装和组件封装。下面我将分别 介绍这两种方法的具体实现步骤。 方法1:全局安装 1.安装ECharts 在你的Vue项目中,首先需要安装ECharts。打开终端,运行以下命令: Bash copy code npm install ec…...

【docker】docker改动镜像并重新编译举例

docker改动镜像并重新编译举例 使用vllm启动Qwen VL 2.5出现报错 0.7.2 Docker Container doesnt support Qwen VL 2.5 Instruct 查看镜像 docker images 会发现本地有vllm/vllm-openai:v0.7.2镜像,id为f78c8f2f8ad5 空白文件夹中新建文件Dockerfile 写入&#…...

具身智能训练新思路!将生成视频用于训练机器人

将生成视频用于训练具身智能(Embodied AI)确实是近年来备受关注的前沿方向,这一思路通过结合生成式AI(如扩散模型、神经辐射场等)与机器人学习,为解决真实世界数据稀缺、训练成本高等问题提供了新可能。以下从技术逻辑、潜在优势、挑战及案例方向展开分析: 一、技术逻辑…...

15、深度学习-自学之路-反向传播程序展示、激活函数的应用,反向权重的更新、2层神经网络的应用,输入输出相关性的理解。

这个里面要学习和展示的内容会比较多,需要好好的认真思考 第一个要思考的就是:输入和输出相关性的理解,我们先拿一层的神经网络来说明一下, 输入有2个因素,对应有两个权重,输出有一个结果。 输入的两个因…...

【JavaEE进阶】依赖注入 DI详解

目录 🌴什么是依赖注入 🎄依赖注入的三种方法 🚩属性注⼊(Field Injection) 🚩Setter注入 🚩构造方法注入 🚩三种注⼊的优缺点 🌳Autowired存在的问题 🌲解决Autowired存在的…...

医疗影响分割 | 使用 Swin UNETR 训练自己的数据集(3D医疗影像分割教程)

<Swin UNETR: Swin Transformers for Semantic Segmentation of Brain Tumors in MRI Images> 代码地址:unetr 论文地址:https://arxiv.org/pdf/2201.01266 一、下载代码 在Github上下载代码,然后进入SWINUNETR,前两个是针对两个数据集(BRATS21、BTCV)的操作,这里…...

IGBT的两级关断

IGBT&#xff08;绝缘栅双极型晶体管&#xff09;的两级关断&#xff08;Two-stage turn-off&#xff09;是一种优化关断过程的方法&#xff0c;主要用于减少关断时的电压过冲和dv/dt&#xff08;电压变化率&#xff09;过高的问题&#xff0c;特别是在大功率应用中&#xff08…...

微服务与网关

什么是网关 背景 单体项目中&#xff0c;前端只用访问指定的一个端口8080&#xff0c;就可以得到任何想要的数据 微服务项目中&#xff0c;ip是不断变化的&#xff0c;端口是多个的 解决方案&#xff1a;网关 网关&#xff1a;就是网络的关口&#xff0c;负责请求的路由、转发…...

“云计算一哥”一口气发布6个大模型、3nm芯片!多模态还要搞Any-to-Any

金磊 发自 拉斯维加斯量子位 | 公众号 QbitAI 就在刚刚&#xff0c;云计算一哥亚马逊云科技&#xff0c;在大模型这件事儿上搞了波大的—— 亚马逊CEO Andy Jassy亲自站台re:Invent24&#xff0c;发布自家新款AI多模态系列大模型&#xff0c;名曰Amazon Nova。 而且是一口气涵盖…...

pytest生成报告no tests ran in 0.01s

除了基本的环境配置、用例名要以test_开头&#xff0c;有个地方是我自己忽略了&#xff0c;在执行时没有指定用例文件&#xff0c;所以没有找到。 if __name__ __main__:pytest.main(["testcases/test_demo.py","-svq", __file__, --alluredir./allure-r…...

如何修改DNS解析?

DNS(域名系统)就像互联网的“电话簿”&#xff0c;负责将我们输入的网址转换为计算机能够理解的IP地址。如果DNS解析出现问题&#xff0c;访问网站就会受到影响。那我们该如何修改DNS解析呢?接下来&#xff0c;我们就来介绍一下这个话题。 为什么要修改DNS解析? 使用默认的…...

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中&#xff0c;遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…...

微服务组件LoadBalancer负载均衡

SpringCloud 从 2020.0.1 版本开始,移除了 Ribbon 组件&#xff0c;使⽤Spring Cloud LoadBalancer 组件来代 替 Ribbon 实现客户端负载均衡 loadbalancer负载均衡&#xff1a; 复制一份provider项目&#xff0c;服务名一致&#xff0c;端口号不一致&#xff0c;让consumer调…...

如何本地部署DeepSeek

第一步&#xff1a;安装ollama https://ollama.com/download 打开官网&#xff0c;选择对应版本 第二步&#xff1a;选择合适的模型 https://ollama.com/ 模型名称中的 1.5B、7B、8B 等数字代表模型的参数量&#xff08;Parameters&#xff09;&#xff0c;其中 B 是英文 B…...

vite + axios 代理不起作用 404 无效

vite axios 代理不起作用 先看官方示例 export default defineConfig({server: {proxy: {// 字符串简写写法/foo: http://localhost:4567,// 选项写法/api: {target: http://jsonplaceholder.typicode.com,changeOrigin: true,rewrite: (path) > path.replace(/^\/api/, )…...

centos7 升级openssl并安装python3

参考文章&#xff1a;https://www.cnblogs.com/chuanzhang053/p/17653635.html 卸载已有版本 yum remove -y openssl openssl-devel下载1.1版本 wget https://www.openssl.org/source/openssl-1.1.1v.tar.gztar -zxf openssl-1.1.1v.tar.gz 查看openssl.conf文件的目录 fin…...

使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8

文章目录 1. 安装 SDKMAN!2. 查找可用的 Java 8 版本3. 安装 Java 84. 验证安装5. 切换 Java 版本&#xff08;可选&#xff09;6. 解决 ARM 架构兼容性问题总结 可以使用 SDKMAN! 在 Mac&#xff08;包括 ARM 架构的 M1/M2 芯片&#xff09;上安装 Java 8。SDKMAN! 是一个强大…...

【干活分享】2025年可以免费问答的一些GPT网站-deepseek等免费gpt

2025年已经到来&#xff0c;大家也都陆续回归到忙碌的工作中。在新的一年里&#xff0c;如何更高效地完成工作任务&#xff0c;提升工作效率&#xff0c;是很多人关心的问题。今天&#xff0c;就为大家分享一些实用性很强的GPT网站&#xff0c;帮助大家在工作中事半功倍。 Dee…...

电子围栏系统设计:基于基站定位的防疫隔离技术方案解析

1. 项目概述&#xff1a;电子围栏系统的核心逻辑与设计初衷在2020年初那场席卷全球的公共卫生事件中&#xff0c;如何有效管理居家隔离人员&#xff0c;防止疫情在社区内扩散&#xff0c;成了各国政府面临的共同难题。当时&#xff0c;我作为技术顾问&#xff0c;深度参与了一些…...

AI智能体技能库开发指南:模块化设计、安全实践与性能优化

1. 项目概述&#xff1a;一个面向AI智能体的技能库最近在折腾AI智能体&#xff08;Agent&#xff09;开发&#xff0c;发现一个挺有意思的项目&#xff1a;jdrhyne/agent-skills。这名字听起来就挺直白&#xff0c;一个“智能体技能库”。简单来说&#xff0c;它不是一个完整的…...

【场景生成与研究】考虑时序相关性MC的场景生成与削减研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...

BilibiliVideoDownload跨平台视频下载工具:从安装到高级配置的完整指南

BilibiliVideoDownload跨平台视频下载工具&#xff1a;从安装到高级配置的完整指南 【免费下载链接】BilibiliVideoDownload Cross-platform download bilibili video desktop software, support windows, macOS, Linux 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibil…...

ikhono开源框架:AI应用开发的统一抽象与实战指南

1. 项目概述与核心价值最近在AI应用开发圈子里&#xff0c;一个名为ikhono-ai/ikhono的开源项目引起了我的注意。乍一看这个标题&#xff0c;你可能会有点懵&#xff0c;这名字不像我们常见的那些“XX-GPT”、“XX-Agent”那么直白。但恰恰是这种独特的命名&#xff0c;让我产生…...

在自动化脚本中集成Taotoken实现按需调用不同大模型的能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在自动化脚本中集成Taotoken实现按需调用不同大模型的能力 对于需要处理多种任务的自动化脚本&#xff0c;单一模型往往难以满足所…...

Pixel-to-Space 像素到空间 一镜到底·跨镜连续技术解析方案

Pixel-to-Space 像素到空间 一镜到底跨镜连续技术解析方案一、技术总览1.1 核心定义Pixel-to-Space像素到空间&#xff0c;是一套自成体系的二维视频像素向三维物理空间实时反演的全域感知范式&#xff0c;跳出市面传统视频解析与空间重建的通用研发路线&#xff0c;形成专属化…...

AI代码库分析:用大模型自动生成项目教程与架构图

1. 项目概述&#xff1a;用AI将陌生代码库变成你的专属教程 你有没有过这样的经历&#xff1f;接手一个新项目&#xff0c;或者想学习一个热门的开源库&#xff0c;打开GitHub仓库&#xff0c;面对成百上千个文件、错综复杂的目录结构&#xff0c;瞬间感觉无从下手。README.md可…...

如何快速掌握Avogadro 2:开源分子可视化工具的终极指南

如何快速掌握Avogadro 2&#xff1a;开源分子可视化工具的终极指南 【免费下载链接】avogadrolibs Avogadro libraries provide 3D rendering, visualization, analysis and data processing useful in computational chemistry, molecular modeling, bioinformatics, material…...

2025届学术党必备的六大AI科研方案推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于当下&#xff0c;各类文献产出需求呈现出多元态势&#xff0c;一键生成论文功能作为辅助工…...