精通Nginx(03)-配置简述

本文主要讲述Nginx配置文件结构及调试技巧

使用nginx版本为1.24.0。

目录

Nginx目录

nginx.conf内容结构

配置片段化

配置调试技巧


Nginx目录

Nginx编译安装目录如下:

安装指定目录为"/usr/local"。配置目录为/usr/local/nginx/conf。
目录说明:
    conf:存放配置文件目录
    html:默认作为web服务器的根目录
    logs:默认日志目录
    xxx_temp:默认的临时文件目录

如果是yum安装,目录如下:
    /etc/nginx/:默认配置文件目录
    /usr/sbin/:执行文件目录
    /var/log/nginx:默认日志目录

配置文件说明:
/etc/nginx/nginx.conf:是 NGINX 服务使用的默认配置入口点。主要配置 worker 进程、调优、日志记录、动态模块的加载以及对其他 NGINX 配置文件的引用。
/etc/nginx/conf.d/:包含http模块用到的 HTTP 服务器配置文件,以 .conf 结尾。
/var/log/nginx/:是 NGINX 的默认日志位置。

nginx.conf内容结构

下图是nginx安装后的nginx.conf初始化内容及结构说明:

说明:
1、nginx配置文件中每个配置都是一个指令。指令分为简单指令和块指令。一个简单指令由名称和参数组成,用空格分隔,并以分号(;)结尾。块指令的结构与简单指令相同,但它不是以分号结尾,而是以一组由大括号({和})包围的附加指令结尾。如果一个块指令可以在大括号中包含其他指令,那么它被称为上下文(例如:events、http、server和location)。
2、在任何上下文之外放置在配置文件中的指令都被认为是在主上下文中。events和http指令位于主上下文中,server位于http中,location位于server中。
3、上下文划分层级:主上下文-http-server-location。下级上下文可继承上级上下文中定义的指令,如果相同指令在下级上下文重新定义了,以下级为准。举例error_log参数(可在所有级定义):
    a. 在主上下文定义,表示全nginx错误日志共用一个error.log文件;
    b.可再在http主上下文中定义,表示http的错误日志共用一个error.log文件;如果http上下文没有定义error_log,则用主上下文定义的error.log文件
    c.再在server主上下文中定义,表示该server的错误日志单独用这个error.log文件;如果server块没有定义error_log,则用http主上下文定义的error.log文件
4、部分指令可在任何上下文中配置,有的只能在特定上下文配置。如果指令配置位置有错,nginx -t|T可检测,直接运行也会报错。
5、 #符号后的其余部分被视为注释。

下面是一个配置示例:

pid logs/nginx.pid;worker_processes auto;worker_rlimit_nofile 65536;error_log  logs/error.log;events {worker_connections 16384;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;access_log  /var/log/nginx/access.log  main;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';server {listen         80;server_name     _;access_log      /var/log/nginx/access.log;server_name_in_redirect  off;location / {root  /usr/share/nginx/html;index index.html;}}# conf.d下通常是更多server的定义include /etc/nginx/conf.d/*.conf;
}


配置片段化

        用include 语句组织配置-include读入的文件内容就如直接在nginx.conf定义的片段被单独抽出来作为一个文件,include就是复原位置而已。应用场景:
        1、http模块中”include /etc/nginx/conf.d/*.conf;“意思就是把每个server单独用一个文件配置,然后用include 语句读入。
        2、对于需重复定义的配置片段,单独抽出来作为一个文件,在使用的地方用include 语句读入即可。
        这种方式组织配置是最佳实践,可使配置简洁、易扩展。

配置调试技巧

1、检查配置语法

nginx -t
测试 NGINX 配置。
nginx -T
测试 NGINX 配置并将验证后的配置打印到屏幕上。此命令在寻求支持时很有用。

2、快速加载新配置

nginx -s reload
在保证不丢包的情况下重新加载配置。适合在线调整配置参数。

3、验证是否匹配正确,方法如下:
3.1、在配置文件中,在要验证匹配地方,匹配后用return指令输出结果 。举例如下:   

 # 测试server {listen 8080 default_server;# 表示当前服务器匹配了来自8080的请求return 900;}server {listen 80 default_server;location / {#表示当前location匹配规则生效return 901;}location = / {#表示当前location匹配规则生效return 902;}}

注:return返回是三位数字。
3.2、运行nginx -s reload加载最新配置
3.3、用curl命令测试,如:

注意:调试完要去掉return配置

3.4、如果方法要用于测试服务器名匹配,可利用hosts文件把域名映射到127.0.0.1,然后用3.1-3.3步调试。最后调试完别忘了在hosts中删除映射关系。

该方法非常实用。

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

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

相关文章

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标,y1和y2列分别为纵坐标画折线图。 选择插入-》图表: 选择折线图-》点和线,然后点击“下一步”: 选择:列中包含数据序列,然后点击完成(因为图挡住了数据…

Kubeadm高可用

目录 1、 环境准备 2、所有节点安装docker 3、所有节点安装kubeadm,kubelet和kubectl 4、部署 master 节点 高可用多 master 节点部署 master01(2C/4G,cpu核心数要求大于2) 192.168.80.20 master02(2C/4G&…

浏览器哪家强——PC端篇

今天的分享将围绕一个大家再熟悉不过的名称展开——浏览器。 根据百科给出的解释:浏览器是用来检索、展示以及传递Web信息资源的应用程序。通俗的说,浏览器就是一种阅读工具,类似记事本、word、wps,只不过后者阅读的是文本文档&am…

linux同一局域网下如何连接其他路由器下的主机

一、环境:win10系统、Linux虚拟机 二、操作步骤: 1、因为是一个IP,先把win10下的IP地址修改任意IP,不能上网也行,主要是把他的IP给Linux用。 2、设置Linux的IP地址,注意第一行要全部填写,说明&a…

记一次 logback 没有生成独立日志文件问题

背景 在新项目发布后发现日志文件并没有按照期望的方式独立开来&#xff0c;而是都写在了 application.log 文件中。 问题展示 日志文件&#xff1a; 项目引入展示&#xff1a; <include resource"paas/sendinfo/switch/client/sendinfo-paas-switch-client-log.…

初识JavaScript(一)

文章目录 一、JavaScript介绍二、JavaScript简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是Javascript&#xff1f;4.JavaScript的作用?5.JavaScript的特点 三、JavaScript基础1.注释语法2.JavaScript的使用 四、JavaScript变量与常量变量关键字var和let的区别…

npm install报错,解决记录

第一步&#xff1a;检查和安装 我这里建议检查 1.node.js版本是否和前使用版本一致 2.npm版本是否和前使用版本一致 3.vue版本是否和前使用版本一致 4.vue脚手架是否和前使用版本一致 5.npm镜像是否和前使用版本一致 1.检查版本 【node版本】 命令&#xff1a;node -v 结果&a…

删除排序链表中的重复节点II(C++解法)

题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1…

C++ SpinLock、RecursiveSpinLock 基于原子CAS实现自旋锁(TASLock、TTASLock)

本文使用内存屏障来 VolatileRead、VolatileWrite 保证读写重入自旋锁的当前线程ID&#xff08;tid&#xff09;&#xff0c;如果不愿意采用内存屏障的方式来处理&#xff0c;人们可以选择使用原子变量读写来代替。 C 置R/W内存屏障&#xff1a; static inline void Mem…

SQLITE3 函数接口

简述 sqlite3 接口的核心元素: 两大对象&#xff0c;八大函数&#xff1b; 其中两个对象指的是: sqlite3 数据库连接对象 数据库的连接句柄(数据库的文件描述符) 代表你打开的那个 sqlite3 的数据库文件,后序对数据库的操作都需要用到这个对象 sqlite3_stmt SQL 语句对象…

【智能大数据分析】实验1 MapReduce实验:单词计数

【智能大数据分析】实验1 MapReduce实验&#xff1a;单词计数 文章目录 【智能大数据分析】实验1 MapReduce实验&#xff1a;单词计数一、实验目的二、实验要求三、实验原理1 MapReduce编程2 Java API解析 四、实验步骤1 启动Hadoop2 验证HDFS上没有wordcount的文件夹3 上传数据…

scannet v2 数据集下载(WP)

scannet数据集: 一共1513个采集场景数据(每个场景中点云数量都不一样,如果要用到端到端可能需要采样,使每一个场景的点都相同),共21个类别的对象,其中,1201个场景用于训练,312个场景用于测试,有四个评测任务:3D语义分割、3D实例分割、2D语义分割和2D实例分割。 本文…

线程池--简单版本和复杂版本

目录 一、引言 二、线程池头文件介绍 三、简单版本线程池 1.创建线程池 2.添加任务到线程池 3.子线程执行回调函数 4.摧毁线程池 5.简单版线程池流程分析 四、复杂版本线程池 1.结构体介绍 2.主线程 3.子线程 4.管理线程 一、引言 多线程版服务器一个客户端就需要…

我做云原生的那几年

背景介绍 在2020年6月&#xff0c;我加入了一家拥有超过500人的企业。彼时&#xff0c;前端团队人数众多&#xff0c;有二三十名成员。在这样的大团队中&#xff0c;每个人都要寻找自己的独特之处和核心竞争力。否则&#xff0c;你可能会沉没于常规的增删改查工作中&#xff0…

php 低版本getenv 无法获取变量值的替换方案

正常 7 的版本可以获取环境变量&#xff0c;getenv() 即可,但是到了低版本的&#xff0c;可能只能获取计算机的环境变量&#xff0c;在根目录的.env 文件中无法获取。 只能通过代码简单的转化获取 function env($variableName) {$dotenvFile file_get_contents(.env);$lines …

Qt 使用Quazip解压缩、压缩文件

1.环境搭建 Quazip&#xff0c;是在zlib基础上进行了简单封装的开源库&#xff0c;适用于多种平台&#xff0c;利用它可以很方便将单个或多个文件打包为zip文件&#xff0c;且打包后的zip文件可以通过其它工具打开。 下载Quazip QuaZIP download | SourceForge.net 解压后&…

项目进度管理:确保项目按时完成

项目进度管理是项目管理中至关重要的一环。它涉及到规划、跟踪和控制项目的进度&#xff0c;以确保项目能够按时完成。 一、项目进度管理方法 制定项目计划 项目计划是项目进度管理的基础。它包括确定项目的目标、范围、资源需求和时间表等内容。在制定项目计划时&#xff0…

代码随想录训练营第52天 | 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 题目链接&#xff1a;https://leetcode.com/problems/longest-increasing-subsequence 解法&#xff1a; 1. dp[i]的定义 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。 2. 状态转移方程 位置i的最长升序子序列等于j从0到i-1各个位置…

Ubuntu更换镜像源

Ubuntu更换镜像源 镜像源设置文件镜像源设置focal版本镜像源设置bionic版本镜像源设置 更新源问题 镜像源设置文件 备份镜像源设置文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑镜像源设置文件 sudo gedit /etc/apt/sources.list镜像源设置 Ubuntu有不…

STM32:使用蓝牙模块

一、蓝牙概要 蓝牙是一种常见的无线通信协议&#xff0c;通常用于短距离通信。蓝牙分为经典蓝牙和低功耗蓝牙(BLE)。经典蓝牙通常用于需要持续传输数据的设备&#xff0c;比如蓝牙耳机等。低功耗蓝牙通常用于只需要间歇性传输数据的设备&#xff0c;比如运动手环。 蓝牙…