精通Nginx(03)-配置简述

news2024/11/25 11:29:14

本文主要讲述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.coloradmin.cn/o/1161422.html

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

相关文章

在NestJS应用程序中使用 Unleash 实现功能切换的指南

前言 近年来,软件开发行业迅速发展,功能开关(Feature Toggle)成为了一种常见的开发实践。通过功能开关,可以在运行时动态地启用或禁用应用程序的特定功能,以提供更灵活的软件交付和配置管理。对于使用 Nes…

【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析

【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析 1 题目 坑洼道路检测和识别是一种计算机视觉任务,旨在通过数字图像(通常是地表坑洼图像)识别出存在坑洼的道路。这…

什么是Babel?它的主要作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

随想录一刷·数组part2

你好&#xff0c;我是安然无虞。 文章目录 1. 有序数组的平方2. 长度最小的最数组3. 螺旋数组II 1. 有序数组的平方 有序数组的平方 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {int n nums.size();// 以0为分割线的话&#xff…

GoLang忽略文件夹

一、忽略 在使用GoLang开发的过程中&#xff0c;我们可能在搜索查找时&#xff0c;需要屏蔽一些日志文件或者编译文件&#xff0c;基于这样的需求&#xff0c;我们可以在GoLang编辑器中右键选择对应的文件夹-》Mark Directory as-》Ecluded。 这样就可以忽略掉对应的文件夹。 …

Django中的FBV和CBV

一、两者的区别 1、在我们日常学习Django中&#xff0c;都是用的FBV&#xff08;function base views&#xff09;方式&#xff0c;就是在视图中用函数处理各种请求。而CBV&#xff08;class base view&#xff09;则是通过类来处理请求。 2、Python是一个面向对象的编程语言…

【Linux】Linux项目部署及更改访问端口号和jdk、tomcat、MySQL环境搭建的配置安装

目录 一、作用 二、配置 1、上传安装包 2、jdk 2.1、解压对应安装包 2.2、环境变量搭建 3、tomcat 3.1、解压对应安装包 3.2、启动 3.3、设置防火墙 3.4、设置开发端口 4、MySQL 三、后端部署 四、Linux部署项目 1、单体项目 五、修改端口访问 1、进入目录 2…

IOS渲染流程之RenderServer处理图层信息

先来回顾一下Android的渲染史&#xff1a; Android的渲染史&#xff1a; Android4.0之前绘制是在主线程执行的&#xff0c;4.0之后除了引入Vsync和双缓冲还引入了单独处理绘制的RenderServer线程。在draw中保存记录绘制指令&#xff0c;稍后RenderServer会取出绘制指令进行调…

MySQL数据库——存储过程-介绍以及基本语法(特点、创建、调用、查看、删除、示例)

目录 介绍 特点 基本语法 创建 调用 查看 删除 示例 介绍 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理…

快速入手maven

文章目录 Maven介绍Maven安装和配置基于IDEA的Maven工程创建梳理Maven工程GAVP属性Idea构建Maven JavaSE工程Idea构建Maven JavaEE工程1. 手动创建2. 插件方式创建 Maven工程项目结构说明Maven核心功能依赖和构建管理依赖传递和冲突依赖导入失败场景和解决方案扩展构建管理和插…

只需 4 个简单步骤即可为您的 ML 系统充电

使用 DALL 生成的图像。D-R型 一、说明 这篇文章将带您了解我通过 4 个简单步骤优化任何 ML 系统以进行闪电般快速的训练和推理的过程。 想象一下&#xff1a;你终于被安排在一个很酷的新ML项目中&#xff0c;你正在训练你的经纪人计算一张照片中有多少只热狗&#xff0c;它的成…

任正非说:人家问我:“你怎么一天到晚游手好闲?”我说我是管长江的堤坝的。

你好&#xff01;这是华研荟【任正非说】系列的第26篇文章&#xff0c;让我们聆听任正非先生的真知灼见&#xff0c;学习华为的管理思想和管理理念。 一、我们不是靠人来领导这个公司&#xff0c;我们用规则的确定性来对付结果的不确定。人家问我&#xff1a;“你怎么一天到晚游…

NEWSTART2022 web week1

01HTTP flag{f1cb35f5-05de-4559-8f99-28e1f11df403} 02Head?Header! 或者xxf头:localhost 03我真的会谢 这个题目比之前有意思多了 可知是vim缓存&#xff0c;利用vim缓存知识&#xff1a; 使用vim时会创建临时缓存文件&#xff0c;关闭vim时缓存文件则会被删除。vim异常…

亚马逊云科技:让生成式AI真正走向普惠

伴随着ChatGPT的横空出世&#xff0c;生成式AI&#xff08;Artificial Intelligence Generated Content&#xff0c;也称AIGC&#xff09;大潮也以锐不可当之势席卷全球。从各行各业的商业领袖&#xff0c;到千千万万的程序员和开发者&#xff0c;都在思考如何借助生成式AI技术…

Leetcode刷题详解——两两交换链表中的节点

1. 题目链接&#xff1a;24. 两两交换链表中的节点 2. 题目描述&#xff1a; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 …

vue自定义组件:中线分割拖动盘

在GitHub上可以找到类似的组件&#xff0c;比如4年前发布的vue2版本的 Vue Split Pane&#xff0c; 但是我还是自己写了一个类似的&#xff1a; 组件效果&#xff1a; 特点&#xff1a; 不是照抄别人的。同时支持vue2、vue3&#xff08;组件内部使用选项式API风格&#xff09…

【JavaScript保姆级教程】switch分支与while循环

文章目录 前言一、Switch分支1.1 switch基本结构1.2 break语句1.3 default标签1.4 下面是几个Switch分支的示例代码&#xff1a;示例1: 根据星期数输出对应的中文星期名称示例2: 根据用户输入的颜色选择执行不同的操作 二、While循环&#xff1a;2.1 while循环基本格式2.2 cont…

学习性能测试线路图

性能测试学习线路图(建议) 1、概览 纵向划分3颗子树:vugen,controller,monitor。优先学习vugen脚本开发以及调试。 横向划分为2层&#xff1a;基础知识以及高级应用。 2、基础知识 2.1、Loadrunner工具使用 2.1.1、建议学习路径 Vugen开发脚本&#xff08;函数使用&#x…

2.2 - 网络协议 - IP协议,IP地址划分,报文格式,数据分片,抓包实战

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 IP协议 1、IP地址划分2、IP协议报文格式3、IP协议数…

Git(七).git 文件夹瘦身,GitLab 永久删除文件

目录 一、问题背景二、问题复现2.1 新建项目2.2 上传大文件2.3 上传结果 三、解决方案3.1 GitLab备份与还原1&#xff09;备份2&#xff09;还原 3.2 删除方式一&#xff1a;git filter-repo 命令【推荐】1&#xff09;安装2&#xff09;删除本地仓库文件3&#xff09;重新关联…