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

10. docker nginx官方镜像使用方法

        本文介绍docker nginx官方镜像使用方法,因为第一次用,在加上对docker也不是很熟,中间踩了一些坑,为了避免下一次用又踩坑,因此记录如下,也希望能够帮到其它小伙伴。

        官方镜像页面:https://hub.docker.com/_/nginx

        镜像拉取 docker pull nginx

        拉取镜像后可以启动镜像 docker run --name nginx -p 80:80 -d 1ee494ebb83f

        但是光启动镜像,用处不大,因为首先你需要有个有意义的配置文件才比较有用。

        不过也不是一点儿用处没有,至少你可以用它验证你的nginx配置文件有没有错,比如这样:docker exec nginx(容器名称) nginx -t -c /tmp/nginx.conf

        下面就来讲讲配置文件,是我踩坑比较多的地方,我配置文件大概是这样的,中间隐去了我项目中的一些具体内容,不过没关系,不妨碍演示:

user admin;
worker_processes auto;
error_log /home/admin/nginx/logs/nginx_error.log warn;
pid /home/admin/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;events {use epoll;worker_connections 65535;
}http {include mime.types;default_type application/octet-stream;server_tokens off;log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $bytes_sent ''"$http_j_forwarded_for" "$http_x_forwarded_for" ''"$http_referer" "$http_user_agent" ''"$gzip_ratio"';# charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 300m;sendfile on;tcp_nopush on;keepalive_timeout 0;tcp_nodelay on;client_body_buffer_size 512k;fastcgi_intercept_errors on;proxy_connect_timeout 90;proxy_read_timeout 180;proxy_send_timeout 180;proxy_buffer_size 256k;proxy_buffers 4 256k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_intercept_errors on;server_name_in_redirect off;proxy_hide_header X-Powered-By;gzip on;gzip_min_length 100;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 9;gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/json;gzip_vary on;gzip_proxied any;error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 = http://www.xx.com/error.html;server {listen 80;server_name localhost;location /web {alias /home/admin/api;}access_log /home/admin/nginx/logs/api_access.log;error_log /home/admin/nginx/logs/api_error.log;}
}

        我是这么启动镜像的
docker run --name nginx -p 80:80 -v /home/admin/nginx/api.conf:/etc/nginx/conf.d/default.conf -d 1ee494ebb83f
        我启动的时候,把我的nginx配置文件放到了/home/admin/nginx/api.conf 下,并把它映射到了容器的/etc/nginx/conf.d/default.conf文件上,但是这样启动的时候,容器启动不起来,启动报错信息可以用命令 docker logs nginx(容器名称)看到。

        报错原始信息我没有记录下来,意思是说配置文件开头的user admin;这一行不合法,出现在了不该出现的位置。但是我明明用nginx -t -c 验证过的。我把user admin 这行注释掉了,然后docker start nginx 发现还是起不来,查看日志说 worker_processes auto; 这一行不合法,出现在了不应该出现的位置。

        我想了下,觉得肯定是我没明白docker nginx容器的启动方式,然后我大模型了一下,果然,nginx启动的时候,默认会加载/etc/nginx/nginx.conf下的配置文件,这个文件内容大概是这样的

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;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  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;include /etc/nginx/conf.d/*.conf;
}

        这个文件会include /etc/nginx/conf.d/*.conf;怪不得说我配置文件格式不对呢。

        然后我把配置文件修改成了两部分,一部分作为nginx.conf,一部分作为default.conf, nginx.conf如下:

user admin;
worker_processes auto;
error_log /home/admin/nginx/logs/nginx_error.log warn;
pid /home/admin/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;events {use epoll;worker_connections 65535;
}http {include mime.types;default_type application/octet-stream;server_tokens off;log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $bytes_sent ''"$http_j_forwarded_for" "$http_x_forwarded_for" ''"$http_referer" "$http_user_agent" ''"$gzip_ratio"';# charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 300m;sendfile on;tcp_nopush on;keepalive_timeout 0;tcp_nodelay on;client_body_buffer_size 512k;fastcgi_intercept_errors on;proxy_connect_timeout 90;proxy_read_timeout 180;proxy_send_timeout 180;proxy_buffer_size 256k;proxy_buffers 4 256k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_intercept_errors on;server_name_in_redirect off;proxy_hide_header X-Powered-By;gzip on;gzip_min_length 100;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 9;gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/json;gzip_vary on;gzip_proxied any;error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 = http://www.xx.com/error.html;
}

        另一部分作为default.conf(文件名api.conf)的配置如下:

server {listen 80;server_name localhost;location /web {alias /home/admin/api;}access_log /home/admin/nginx/logs/api_access.log;error_log /home/admin/nginx/logs/api_error.log;}

        然后我用这个命令启动:docker run --name nginx -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/api.conf:/etc/nginx/conf.d/default.conf -d 1ee494ebb83f

        这次终于不报错格式不对了,但是报错/home/admin/nginx/logs/目录不存在,报错原因是nginx容器中没有这个目录,解决方法是把本地目录挂载到docker中,启动命令我修改成了这样 :docker run --name nginx -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/api.conf:/etc/nginx/conf.d/default.conf -v /home:/home -d 1ee494ebb83f

        我启动了一把,还是报错,报错的意思是说/etc/mime.types文件不存在,指向这一行代码 include mime.types;我查看了一下,我宿主机中有这个文件,于是我又修改了一把启动命令:docker run --name nginx -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/api.conf:/etc/nginx/conf.d/default.conf -v /home:/home -v /etc/mime.types:/etc/mime.types -d 1ee494ebb83f

        这次终于起来了!

相关文章:

10. docker nginx官方镜像使用方法

本文介绍docker nginx官方镜像使用方法,因为第一次用,在加上对docker也不是很熟,中间踩了一些坑,为了避免下一次用又踩坑,因此记录如下,也希望能够帮到其它小伙伴。 官方镜像页面:https://hub.d…...

[Web 安全] PHP 反序列化漏洞 —— PHP 反序列化漏洞演示案例

关注这个专栏的其他相关笔记:[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 PHP 反序列化漏洞产生原因 PHP 反序列化漏洞产生的原因就是因为在反序列化过程中,unserialize() 接收的值可控。 0x01:环境搭建 这里笔者是使用 PhpStudy 搭建的环…...

es-head(es库-谷歌浏览器插件)

1.下载es-head插件压缩包,并解压缩 2.谷歌浏览器添加插件 3.使用...

第二十:【路由的props配置】

作用:让路由组件更方便的收到参数(可以将路由参数作为props传给组件) {name:xiang,path:detail/:id/:title/:content,component:Detail, ​ 第一种方法:// props的对象写法,作用:把对象中的每一组key-valu…...

Vue 2全屏滚动动画实战:结合fullpage-vue与animate.css打造炫酷H5页面

引言 在移动端H5开发中,全屏滚动效果因其沉浸式体验而广受欢迎。如何快速实现带有动态加载动画的全屏滚动页面?本文将手把手教你使用 Vue 2、全屏滚动插件 fullpage-vue 和动画库 animate.css 3.5.1,打造一个高效且视觉冲击力强的H5页面。通…...

AF3 DataPipeline类process_pdb 方法解读

DataPipeline 类中的 process_pdb 方法用于从 PDB 文件中生成特定蛋白质链的特征,作为 AlphaFold3 预测的输入。它的流程与 process_mmcif 类似,但输入来源是 PDB 文件而非 MmcifObject。 源代码: def process_pdb(self,pdb_path: str,alignment_dir: str,is_distillation:…...

抓包工具 wireshark

1.什么是抓包工具 抓包工具是什么?-CSDN博客 2.wireshark的安装 【抓包工具】win 10 / win 11:WireShark 下载、安装、使用_windows抓包工具-CSDN博客 3.wireshark的基础操作 Wireshark零基础使用教程(超详细) - 元宇宙-Meta…...

OpenBMC:BmcWeb app获取socket

OpenBMC:BmcWeb app.run-CSDN博客 app对象在run函数中调用了setupSocket() static std::vector<Acceptor> setupSocket() {std::vector<Acceptor> acceptors;char** names = nullptr;int listenFdCount = sd_listen_fds_with_names(0, &names);BMCWEB_LOG_DE…...

《深度学习实战》第2集-补充:卷积神经网络(CNN)与图像分类 实战代码解析和改进

以下是对《深度学习实战》第2集中 CIFAR-10 数据集 使用卷积神经网络进行图像分类实战 代码的详细分析&#xff0c;并增加数据探索环节&#xff0c;同时对数据探索、模型训练和评估的过程进行具体说明。所有代码都附上了运行结果配图&#xff0c;方便对比。 《深度学习实战》第…...

nodejs:express + js-mdict 作为后端,vue 3 + vite 作为前端,在线查询英汉词典

向 doubao.com/chat/ 提问&#xff1a; node.js js-mdict 作为后端&#xff0c;vue 3 vite 作为前端&#xff0c;编写在线查询英汉词典 后端部分&#xff08;express js-mdict &#xff09; 1. 项目结构 首先&#xff0c;创建一个项目目录&#xff0c;结构如下&#xff1…...

《深度剖析Linux 系统 Shell 核心用法与原理_666》

1. 管道符的用法 查找当前目录下所有txt文件并统计行数 # 使用管道符将ls命令的结果传递给wc命令进行行数统计 ls *.txt | wc -l 在/etc目录下查找包含"network"的文件并统计数量 # 使用find命令查找文件&#xff0c;并通过grep查找包含特定字符串的文件&#xf…...

索提诺比率(Sortino Ratio):更精准的风险调整收益指标(中英双语)

索提诺比率&#xff08;Sortino Ratio&#xff09;&#xff1a;更精准的风险调整收益指标 &#x1f4c9;&#x1f4ca; &#x1f4cc; 什么是索提诺比率&#xff1f; 在投资分析中&#xff0c;我们通常使用 夏普比率&#xff08;Sharpe Ratio&#xff09; 来衡量风险调整后的…...

minio作为K8S后端存储

docker部署minio mkdir -p /minio/datadocker run -d \-p 9000:9000 \-p 9001:9001 \--name minio \-v /minio/data:/data \-e "MINIO_ROOT_USERjbk" \-e "MINIO_ROOT_PASSWORDjbjbjb123" \quay.io/minio/minio server /data --console-address ":90…...

一周学会Flask3 Python Web开发-Jinja2模板访问对象

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象&#xff0c;如果如何来访问呢&#xff1f; 我们看下下面示例&#xff1a; 定义一个Student类 cla…...

RAGS评测后的数据 如何利用influxdb和grafan 进行数据汇总查看

RAGS(通常指相关性、准确性、语法、流畅性)评测后的数据能借助 InfluxDB 存储,再利用 Grafana 进行可视化展示,实现从四个维度查看数据,并详细呈现每个问题对应的这四个指标情况。以下是详细步骤: 1. 环境准备 InfluxDB 安装与配置 依据自身操作系统,从 InfluxDB 官网下…...

第25周JavaSpringboot实战-电商项目 4.商品分类管理

商品分类模块开发笔记 模块功能概述 实现分类数据的 增删改查 功能核心难点&#xff1a; 分类的父子级目录结构递归实现多级分类查找列表展示顺序控制&#xff08;从父级向子级递归&#xff09; 接口说明 后台接口 1. 添加分类 请求地址: /admin/category/add 请求方法: …...

C语言--正序、逆序输出为奇数的位。

题目&#xff1a; 采用正序和逆序分别输出为奇数的位。例如输入12345&#xff0c;正序输出135&#xff0c;逆序输出531 代码&#xff1a; #include <stdio.h>void printOddDigits(int num) {int res 0;int divider 10;while (num / divider > 10) {divider * 10;…...

C#快速调用DeepSeek接口,winform接入DeepSeek查询资料 C#零门槛接入DeepSeek C#接入DeepSeek源代码下载

下载地址<------完整源码 在数字化转型加速的背景下&#xff0c;企业应用系统对智能服务的需求日益增长。DeepSeek作为先进的人工智能服务平台&#xff0c;其自然语言处理、图像识别等核心能力可显著提升业务系统的智能化水平。传统开发模式下&#xff0c;C#开发者需要耗费大…...

H13-821 V3.0 HCIP 华为云服务架构题库

华为云上哪个服务能够用于收集来自主机和云服务的日志数据&#xff0c;并通过海量日志数据的分析与处理帮助开发或运维人员进行问题定位和分析&#xff1f; A&#xff1a;云监控服务 B&#xff1a;云日志服务 C&#xff1a;云审计服务 D&#xff1a;对象存储服务 答案&#xff…...

Linux主机用户登陆安全配置

Linux主机用户登陆安全配置 在Linux主机上进行用户登录安全配置是一个重要的安全措施&#xff0c;可以防止未经授权的访问。以下是如何创建用户hbu、赋予其sudo权限&#xff0c;以及禁止root用户SSH登录&#xff0c;以及通过ssh key管理主机用户登陆。 创建用户hbu 使用具有…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...