nginx--配置文件

组成

主配置文件:nginx.conf

子配置文件:include conf.d/*.conf

协议相关的配置文件:fastcgi  uwsgi scgi等

mime.types:⽀持的mime类型,MIME(Multipurpose Internet Mail Extensions)多用途互联⽹网邮件扩展类型,MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定用程序来打开。多用于指定⼀些客户端自定义的文件名,以及⼀些媒体文件打开方式。

MIME参考⽂文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types

 默认配置文件

参考文档

全局配置端,对全局⽣生效,主要设置nginx的启动⽤用户/组,启动的⼯工作进程数量量,⼯工作模式,Nginx的PID路路径,⽇日志路路径等

user nginx nginx;

设置权限用户和组

worker_processes number/auto;

启动工作进程数数量
auto:特殊值 允许 将工作进程自动绑定到可用 CPU

将每个工作进程绑定到单独的 CPU:worker_cpu_affinity 0001 0010 0100 1000;(4核cpu)
特殊值 (1.9.10) 允许 将工作进程自动绑定到可用 CPU:worker_cpu_affinity auto;(建议使用)
可选的掩码参数可用于限制 CPU 可用于自动绑定:worker_cpu_affinity auto 01010101;

 

 开启测试:

watch -n1 'ps -axo pid,cmd,psr,nice | grep nginx'
while true;do curl http://192.168.33.179/index.html;sleep 0.2;done


 不开启

错误⽇日志记录配置,语法:
error_log file [debug | info | notice | warn | error |
crit | alert | emerg]
error_log logs/error.log;
error_log logs/error.log notice;
error_log /apps/nginx/logs/error.log error;

pid⽂文件保存路路径
pid /apps/nginx/logs/nginx.pid; 

worker_priority 0; 工作进程nice值,-20~19(越低优先级越高)
worker_rlimit_nofile 65536; 这个数字包括Nginx的所有连接(例如与代理理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最⼤打开⽂件数的限制.

 daemon off; 前台运行Nginx服务用于测试、docker等环境。
master_process off|on; 是否开启Nginx的master-woker工作模式,仅用于开发调试场景。


events

events设置块,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最⼤大连接数,是否开启对多工作进程下的网络连接进行序列化等。

worker_connections 1024; 

设置单个nginx⼯工作进程可以接受的最⼤大并发,作为web服务器的时候最大并发数为worker_connections * worker_processes,作为反向代理的时候为(worker_connections * worker_processes)/2

use epoll; 使用epoll事件驱动,Nginx⽀支持众多的事件驱动,比如select、poll、epoll,只能设置在events模块中设置。
accept_mutex on; 优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off,全部唤醒的过程也成为"惊群",因此nginx刚安装完以后要进⾏适当的优化。
multi_accept on; Nginx服务器器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能⼀次接受一个新的网络连接,打开后几个同时接受多个。 

 http

http块是Nginx服务器器配置中的重要部分,缓存、代理理和⽇日志格式定义等绝大多数功能和第三方模块都可以在这设置,http块可以包含多个server块,而一个server块中又可以包含多个location块,server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时间和单个链接的请求上限等

 

include mime.types; 定义类型
default_type application/octet-stream;没有定义的文件下载
sendfile on; 作为web服务器器的时候打开sendfile加快静态⽂文件传输,指定是否使用sendfile系统调用来传输文件,sendfile通过DMA(直接内存访问)⽅方式直接访问文件数据,并通过传输协议发送,从而避免了了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很⾼高,被称之为零拷贝,硬盘>> kernel buffer (快速拷⻉贝到kernel socket buffer) >>协议栈。 
keepalive_timeout timeout header_timeout; 长连接超时时间,单位是秒header_timeout告诉浏览器

DMA(Direct Memory Access)即直接内存访问,DMA是一种不经过CPU⽽直接从内存读取数据的数据交换模式,可以将DMA认为是一种能够通过一组专用总线将内部和外部存储器器与每个具有DMA能力的外设设备连接起来的控制器,在DMA模式下,CPU只须向DMA控制器器下达指令,让DMA控制器器来处理理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了了CPU资源占有率,可以大大节省系统资源,一个处理理器器可以包含多个DMA控制器器,每个控制器有多个DMA通道,以及多条直接与存储器站(memory bank)和外设连接的总线,在很多高性能处理器中集成了两种类型的DMA控制器,第一类通常称为“系统DMA控制器器”,可以实现对任何资源(外设和存储器)的访问,第二类称为内部存储器DMA控制器,专⻔用于内部存储器所处位置之间的相互存取操作,即数据交换不需要经过CPU即可在不同的内存空间进行拷贝可以节省资源copy带来的上线文切换,可以直接在内存和I/O设备之间进行,可以大幅提高CPU性能 

日志配置部分 

#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 logs/access.log main;

自定义优化参数

sendfile on; 实现文件零拷贝
tcp_nopush on; 在开启sendfile的情况下,合并请求后统⼀一发送给客户端。
tcp_nodelay off; 在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户相应报文
gzip on; 开启文件压缩

 service

设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个location模块。比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供web服务

 listen 80; 配置server监听的端口
 server_name www.xxx.com ; 本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配,设置server name,可以空格隔开写多个并⽀支持正则表达式,如*.magedu.com www.magedu.* www.(site\d+)\.magedu\.com$ default_serve
charset koi8-r; 设置编码格式,默认是俄语格式,可以改为utf-8
access_log logs/host.access.log main;

测试
 

mkdir /apps/nginx/conf/conf.d
vim /apps/nginx/conf/conf.d

 server {
  listen 80;
  server_name www.fxq.com;
  location / {
  root /data/nginx/html/pc;
}
}

mkdir -p /data/nginx/html/pc
vim /data/nginx/html/pc/index.html
<h1>欢迎</h1>

 vim /apps/nginx/conf/nginx.conf

 

 在linux访问

vim /etc/hosts
192.168.33.180 www.fxq.com

 在windows上访问
C:\Windows\System32\drivers\etc\hosts

 location

location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,都是在location中体现的,主要是基于nginx接受到的请求字符串,对用户请求的UIL进行匹配,并对特定的指令进行处理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三方模块的配置也是在location模块中配置

 root html; 相当于默认页面的目录名称,默认是相对路径,可以使用绝对路径配置。
 index index.html index.htm; 默认的页面文件名称

  测试

[root@localhost ~]# cat  /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location /xf {  #必须要在html目录中创建一个xf目录才可以访问,否则报错#使用xf的时候uri后⾯面如果加了斜杠则下⾯的路径配置必须加斜杠,否则403root /data/nginx/html/pc;index index.html
}}
[root@localhost ~]# cat /data/nginx/html/pc/xf/index.html
<html>
<body>
<meta charset="utf-8">
<h1>黑客攻略</h1>
</body>
</html>

 alias:定义路路径别名,会把访问的路路径重新定义到其指定的路路径

 测试
 

[root@localhost ~]# cat /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location /xf {  #使用alias的时候uri后面如果加了斜杠则下面的路径配置必须加斜杠,否则403alias /data/nginx/html/pc;当访问xf的时候,会显示xf定义的/data/nginx/html/pc⾥面的内容。index index.html;
}
}
[root@localhost ~]# cat /data/nginx/html/pc/index.html 
<html>
<body>
<meta charset="utf-8">
<h1>欢迎使用</h1>
</body>
</html>

 error_page

error_page 500 502 503 504 /50x.html; #错误页面的文件名称
location = /50x.html { location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。
           root html; 定义默认页面所在的目录
}

 

  location ~ /\.ht {           拒绝访问文件
        allow   127.0.0.1;允许127.0.0.1访问
        deny  all;                拒绝所有人访问

 

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

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

相关文章

Linux服务器常用命令总结

view查找日志关键词 注意日志级别&#xff0c;回车后等一会儿&#xff0c;因为文件可能比较大加载完需要时间 当内容显示出来后&#xff0c;使用“/关键词”搜索 回车就能搜到&#xff0c;n表示查找下一个&#xff0c;N表示查找上一个 find 查找 find Family -name book …

CBCGPStatic 显示图片

初始化代码&#xff1a; // 1、 m_DataPic.SetPicture(IDB_BITMAP1, TRUE, TRUE); //2、 CString strPath L"C:\\Users\\14713\\Desktop\\Example\\Example\\res\\pic.png"; m_DataPic.SetPicture(strPath, TRUE, TRUE); 资源中&#xff1a; / // //…

MVP+敏捷开发

MVP敏捷开发 1. 什么是敏捷开发&#xff1f; 敏捷开发是一种软件开发方法论&#xff0c;旨在通过迭代、自组织的团队和持续反馈&#xff0c;快速响应需求变化并交付高质量的软件。相较于传统的瀑布模型&#xff0c;敏捷开发强调灵活性、适应性和与客户的紧密合作。敏捷开发方…

深入 Django 模型层:数据库设计与 ORM 实践指南

title: 深入 Django 模型层&#xff1a;数据库设计与 ORM 实践指南 date: 2024/5/3 18:25:33 updated: 2024/5/3 18:25:33 categories: 后端开发 tags: Django ORM模型设计数据库关系性能优化数据安全查询操作模型继承 第一章&#xff1a;引言 Django是一个基于Python的开源…

chrome和drive安装包路径

Chrome for Testing availability (googlechromelabs.github.io) 下载Stable下面的包哈

如何低成本创建个人网站?

目录 前言 网站源代码 虚拟主机或服务器 域名注册或免费二级域名 域名解析 上传源代码压缩包 添加刚刚的域名 成功搭建 失败的解决方案 结语 前言 很多小白都非常想拥有自己的网站&#xff0c;但很多人虽然有了自己的源代码但苦于不知道怎么将其变成所有人都能够访…

深度学习中损失函数和激活函数的选择

文章目录 前言 你需要解决什么问题&#xff1f; 你想预测数值吗&#xff1f; 你想预测分类结果吗&#xff1f; 回归&#xff1a;预测数值 分类&#xff1a;预测二元结果 分类&#xff1a;从多个类别中预测单个标签 分类&#xff1a;从多个类别中预测多个标签 总结表 前言 本篇…

使用Neo4j和Langchain创建知识图谱

使用Neo4j和Langchain创建知识图谱 知识图谱是组织和整合信息的强大工具。通过使用实体作为节点和关系作为边缘&#xff0c;它们提供了一种系统的知识表示方法。这种有条理的表示有利于简化查询、分析和推理&#xff0c;使知识图在搜索引擎、推荐系统、自然语言处理和人工智能…

SpringBoot文件上传+拦截器

1、resource static下有个图片&#xff0c;希望浏览器可以查看这个图片 访问&#xff1a; 若yml设置路径&#xff0c;则可以定义在static下才可以访问 classpath代表类路径&#xff0c;都在target下 也就是项目在运行后的resource下的文件都会到classes下去 无需在target下创…

设计模式之业务代表模式

在编程江湖的风雨中漂泊多年&#xff0c;每当我遇到那些错综复杂的业务逻辑和系统交互&#xff0c;总有一个模式像一位忠诚的骑士&#xff0c;默默守护着我的代码城堡&#xff0c;那就是——业务代表模式&#xff08;Business Delegate Pattern&#xff09;。它不是最耀眼的明星…

Spark Structured Streaming 分流或双写多表 / 多数据源(Multi Sinks / Writes)

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测 目录 分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测分类效果基本介绍程序设计参考资料分类效果 基本介绍 MATLAB实现LSSVM最小二乘支持向量机多分类预测。最小二乘支持向量机(Least Squares Support Vecto…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

【开发技巧 | 第二篇】IDEA新增作者信息、方法参数返回值

文章目录 2.IDEA新增作者信息、方法参数返回值2.1类新增作者信息2.2方法新增参数返回信息2.3测试2.3.1新建类2.3.2新建方法 2.IDEA新增作者信息、方法参数返回值 2.1类新增作者信息 打开IDEA的Settings&#xff0c;Editor->Code Style->File and Code Templates->Inc…

LabVIEW鸡蛋品质智能分级系统

LabVIEW鸡蛋品质智能分级系统 随着现代农业技术的飞速发展&#xff0c;精确、高效的农产品质量控制已成为行业的重要需求。其中&#xff0c;鸡蛋作为日常膳食中不可或缺的重要组成部分&#xff0c;其品质直接关系到消费者的健康与满意度。本文设计并实现了一套基于LabVIEW的鸡…

工厂模式和策略模式区别

工厂模式和策略模式都是面向对象设计模式&#xff0c;但它们的目的和应用场景有所不同。 工厂模式是一种创建型设计模式&#xff0c;旨在通过使用一个工厂类来创建对象&#xff0c;而不是直接使用new关键字来创建对象。这样做可以使系统更容易扩展和维护&#xff0c;因为新的对…

Kotlin基础​​

数据类型 定义变量 var表示定义变量&#xff0c;可以自动推导变量类型&#xff0c;所以Int可以不用写。 定义常量 条件语句 if表达式可以返回值&#xff0c;该值一般写在if里的最后一行 类似switch的用法 区间 循环 a是标签&#xff0c;可以直接break到标签的位置&#xf…

超详细的Vue脚手架

文章目录 Node.js介绍安装快速入门控制台输出使用函数模块化编程 npm包管理器介绍命令初始化命令本地安装(了解)全局安装(掌握)批量下载淘宝npm镜像(建议使用) Webpack介绍安装快速入门方式一&#xff1a;webpack原始方式方式二&#xff1a;基于NPM方式 webpack-dev-server 开发…

GPU并行计算CUDA

一、CUDA 和 GPU 简介 CUDA 是显卡厂商 NVIDIA 推出的运算平台&#xff0c;是一种通用并行计算架构&#xff0c;使得 GPU 能够解决复杂的计算问题。开发人员可以使用 C 语言来为 CUDA 架构编写程序&#xff0c;可以在支持 CUDA 的处理器上以超高性能运行&#xff0c;CUDA 3.0 …

【Docker学习】docker version查看版本信息

就像很多应用一样&#xff0c;docker也使用version来查看版本信息。但因为docker包含有不少独立组件&#xff0c;version的作用范围会更广一些。 用法1&#xff1a; docker --version 描述&#xff1a; 输出安装的Docker CLI 的版本号。关于Docker CLI&#xff0c;请访问。 实操…