Nginx 配置文件

news2024/12/23 18:34:15

Nginx的配置文件的组成部分:

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

全局配置

nginx 有多种模块

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能
  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持
  • Stream服务模块: 实现反向代理功能,包括TCP协议代理
  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

1. 关闭版本或修改版本

查看nginx版本信息

关闭版本号

[root@localhost ~]# vim /etc/nginx/nginx.conf   //修改配置信息
  http {                            //在http语句块中进行修改
      server_tokens  off;   //关闭版本

[root@localhost ~]# nginx -s reload    //重新加载

`注意:`这是唯一一个调优是在http 语句块的,其他都在全局

2. 修改启动的进程数

worker_processes  1;  
#系统默认允许的启动工作进程数数量,和你真实的cpu数量有关

worker_processes auto;
#如果设置为auto,是你真实的cpu数量

3. cpu与work进程绑定

将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占一个核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

CPU序号:

CPU MASK: 00000001:0号CPU

          00000010:1号CPU

          ................

                    10000000:7号CPU

worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号---第3号CPU  

#序号绑定cpu    亲缘性

worker_cpu_affinity 00000101 00001010;

#同一个work  可以绑定  两个cpu可以这么写 但是不建议,本来就是 不希望飘动,这样也是飘动

4. nginx进程的优先级

当你想将nginx的work进程的优先级调高,可以使用nice设置。

worker_priority 0;
//工作进程优先级,-20~20(19)

5. 调试work进程打开的文件的个数

nginx 默认所有子进程一共可以打开的文件数量有限,所以需要优化数值。

worker_rlimit_nofile 65536;
//所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制。
//最好与ulimit -n 或者limits.conf的值保持一致。

events块(nginx工作模式)

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等。

`events  I/O模型调优`

events {
   worker_connections  65536;  //设置单个工作进程的最大并发连接数
   use epoll;
   //使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。
   accept_mutex on;
   //on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on
   multi_accept on;
   //ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on
}

http块(http设置)

http 是一个大的语句块,包含若干个小的语句块(比如server语句块)

http {
 include  /etc/nginx/mime.types;
 #include 指令用于将其他文件或目录中的配置内容包含到当前位置。
 ...
 ...  #各server的公共配置
 server {    #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器
 ...
 }
 server {     
 ...
 server_name   #虚拟主机名
 root     #主目录
 #sever 下的 root指定了主页文件的位置
 alias     #路径别名
 location [OPERATOR] URL {     #指定URL的特性
 ...
 if CONDITION {
 ...
              }
           }
     }
}

server块(主机设置)

一个server就是一个虚拟主机

server作用:对主机的设置,例如端口号、ip地址、域名、主站点、日志 (具体参考官方文档)

1.1 server下的root

root指定了主页文件的位置

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

root 类似与追加
实际 你该访问的页面 是 /data/cxk/cxk/

1.2 server块 构建虚拟主机

基于域名

实验内容: 用一台服务器生成2个站点:手机端、pc端

实验步骤:

编辑主配置文件

[root@node1 ~]#  vim  /apps/nginx/conf/nginx.conf   //编辑主配置文件

http {
    include       mime.types;
    include  /apps/nginx/conf.d/*.conf;      //添加include语句
    default_type  application/octet-stream;
    server_tokens  off;

[root@node1 ~]#  nginx -s reload  //重新加载

编辑子配置文件

[root@node1 data]#  mkdir  {pc,phone}    //建立pc、phone文件夹
[root@node1 data]#  cd pc
[root@node1 pc]#  echo pc > index.html   //生成pc页面
[root@node1 pc]#  cat index.html
pc
[root@node1 pc]#  cd ..
[root@node1 data]#  cd phone/ 
[root@node1 phone]#  echo phone > index.html   //生成phone页面
[root@node1 phone]#  cat index.html
phone

[root@node2 ~]#  vim /etc/hosts     //编辑主机2配置文件,添加域名
172.16.88.8  www.pc.com  www.phone.com

准备页面

​[root@node1 conf.d]#  cd /apps/nginx/conf.d   //切换到子配置文件目录下
[root@node1 conf.d]#  vim pc.conf     //编辑子配置文件pc.conf

server  {
listen 80;
server_name  www.pc.com;
root  /data/pc/;
}

[root@node1 conf.d]#  cp pc.conf m.conf
[root@node1 conf.d]#  vim m.conf   //编辑子配置文件m.conf
server  {
listen 80;
server_name  www.phone.com;
root  /data/phone/;
}

[root@node1 conf.d]#  nginx -t   //检查文件格式
[root@node1 conf.d]#  nginx -s reload   //重新加载

验证

[root@node2 ~]#  curl www.pc.com
pc
[root@node2 ~]#  curl www.phone.com
phone

基于端口

`修改配置文件:`
[root@node1 conf.d]#  vim pc.conf   //编辑子配置文件pc.conf
server  {
listen 9527;
server_name  www.pc.com;
root  /data/pc/;
}
[root@node1 conf.d]#  vim m.conf    //编辑子配置文件m.conf
server  {
listen 80;
server_name  www.phone.com;
root  /data/phone/;
}
[root@node1 conf.d]#  nginx -t          //检查文件格式
[root@node1 conf.d]#  nginx -s reload   //重新加载

`准备页面`

`验证:`
[root@node2 ~]#  curl 172.16.88.8
phone
[root@node2 ~]#  curl 172.16.88.8:9527
pc

基于ip

`修改配置文件:`
[root@node1 conf.d]#  vim pc.conf    //编辑子配置文件pc.conf
server  {
listen 172.16.88.8:80;
server_name  www.pc.com;
root  /data/pc/;
}

[root@node1 conf.d]#  ifconfig ens33:0 172.16.88.100  //添加一个虚拟ip
[root@node1 conf.d]#  vim m.conf     //编辑子配置文件m.conf
server {
listen 172.16.88.100:80;
server_name www.phone.com;
root /data/phone;
}

[root@node1 conf.d]#  nginx -s reload   //重新加载

`准备页面`

`验证:`
[root@node2 ~]#  curl 172.16.88.8
pc
[root@node2 ~]#  curl 172.16.88.100
phone

alias 别名

alise相当于置换

​server {
   listen 80;
   server_name www.pc.com;
   location /cxk {
        root /data/cxk/;
        //相当于追加,访问172.16.88.8/cxk等于访问172.16.88.8/data/cxk/cxk
        }
   location /cxk {
        alias /data/;
        //相当于替换,访问172.16.88.8/cxk就是访问172.16.88.8/data/
        }
}

 location块(URL匹配)

在一个server中location配置段可存在多个,用于实现从url到文件系统的路径映射。

语法规则:

符号

含义

举例

=

精确匹配

location  =/cxk

^~

以什么开头

location  ^~ /cxk

~

开启正则表达式,区分大小写

location  ~ /cxk

~*

开启正则表达式,不区分大小写

location  ~* /cxk

不加符号

匹配起始于此uri的所有的uri

location   /cxk

匹配优先级从高到低: => ^~> ~/~*>不带符号

`前缀匹配:` =  ^~  不带符号 

`正则匹配:` ~  ~*          
先找出所有的前缀匹配,最后再看正则匹配

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

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

相关文章

python基础语法 004-2流程控制- for遍历

1 遍历 1.1 什么是遍历? 可以遍历的元素:字符串、列表、元组、字典、集合字符串是可以进行for 循环。(容器对象,序列)可迭代对象iterable 例子: 1 )、for遍历字符串: name xiao…

Ubuntu20.04 安装 cudatookit 12.2 + cudnn 安装

最简约的部署Ubuntu20.04深度学习环境的教程 1. 安装Ubuntu20.04 系统 B站详细的安装教程 简约安装版 2. 安装Nvidia显卡驱动 我参考了各种资料,重装系统,完美解决开机显示器黑屏无法进入桌面的情况 黑屏问题主要是由linux内核更新导致,…

携程礼品卡能转出去吗?

携程的卡好像只能在旅游的时候用 像买车票啊,机票啊,酒店,景点门票啥的,但是如果我没有出游计划的话 这个卡是不是就要被闲置下来? 这个问题一直让我感到很苦恼,还好有收卡云,不然我的携程卡…

你还搞不懂串口的格式转换问题吗?

相信大多数人在使用串口传输不同单片机之间的数据时都会运到数据格式怎么对应起来的问题,今天我们就来聊聊! 在开始之前我插一个内容,就是不同的单片机之间的电平可能不相同,是不能直接使用杜邦线连接通信的,需要进行电…

centos7搭建zookeeper 集群 1主2从

centos7搭建zookeeper 集群 准备前提规划防火墙开始搭建集群192.168.83.144上传安装包添加环境变量修改zookeeper 的配置 192.168.83.145 和 192.168.83.146 配置 启动 集群 准备 vm 虚拟机centos7系统zookeeper 安装包FinalShell或者其他shell工具 前提 虚拟机安装好3台cen…

私域打造朋友圈秘诀

内容比例把控 朋友圈内容应遵循9:1原则,即90%的人设内容与10%的营销内容。 朋友圈的内容比例非常关键。大部分内容应聚焦在展示个人形象和生活,以此建立信任,而仅有10%的内容用于营销,实现商业价值。 人设内容构建 通过生活圈、工…

从新手到高手:Scala函数式编程完全指南,Scala 数据类型(4)

1、Scala 数据类型 Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档:Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…

多域名聊天:TTKefu如何助力企业实现高效沟通与灵活扩展

在当今数字化时代,企业与客户之间的沟通方式已经发生了翻天覆地的变化。随着互联网的普及和移动设备的普及,企业越来越依赖于线上聊天工具来与客户建立联系。而在这个背景下,TTKefu作为一款先进的多域名聊天工具,凭借其强大的功能…

大促前夕即高点,综合电商平台的“稀缺”魔法正在消失?

新一期618大促早已结束良久了,但似乎其产生的余韵却仍旧未消散。 从最直观的资本市场走势来看,自这一波618大促陆续开展之后,包括京东、阿里巴巴、拼多多等港美股股价就一改此前的上行态势,持续下滑至今。 事实上,早…

JAVA各版本-安装教程

目录 Java安装包下载 Java安装步骤 Java环境配置 Java安装包下载 到Oracle官网下载自己需要的版本 Oracle Java下载:Java Archive | Oracle Hong Kong SAR, PRC 下拉选择自己需要的版本(本教程以Windows环境下,JAVA11为例) 注…

MySQL的简介和安装目录

今日总结到此结束,拜拜!

Chapter 8 Feedback

Chapter 8 Feedback 这一章我们介绍feedback 反馈运放的原理. 负反馈是模拟电路强有力的工具. 8.1 General Considerations 反馈系统如下图所示 Aolamp open-loop gain即开环增益. Aolxo/xi β \beta β 是 feedback factor, 注意方向. β x f x o \beta\frac{x_{f}}{x_{o…

香港优才计划真的要烂尾了吗?该如何防止这种情况发生!

香港优才计划真的要烂尾了吗?该如何提前应对避免烂尾! 香港优才计划的“烂尾”说法主要源于对大量申请者可能面临的续签和转永居挑战的担忧。虽然2023年申请人数激增,但并非所有获得身份的人都能顺利过渡到永久居留。 以下是几个关键点&…

解析QAnything启动命令过程

一.启动命令过程日志 启动命令bash ./run.sh -c local -i 0 -b hf -m Qwen-1_8B-Chat -t qwen-7b-chat。输入日志如下所示: rootMM-202203161213:/mnt/l/20230918_RAG方向/QAnything# bash ./run.sh -c local -i 0 -b hf -m Qwen-1_8B-Chat -t qwen-7b-chat From …

Vulkan学习——渲染3D模型

摘要:本文简要描述了Vulkan渲染一个3D模型需要做的事情,不会对太细节的内容进行深究。   关键字:Vulkan,Render,3D 源码 1 简介 1.1 Vulkan简介 Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口(API&#x…

RK3568驱动指南|第十五篇 I2C-第166章 初步认识I2C

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

k8s流控平台apiserver详解

一、简单理解认识apiserver 1.主要功能 认证 鉴权 准入 mutating validating admission 限流 2.概念 apiserver保护etcd,缓存机制,有缓存直接返回,没缓存再去查看etcd,apiserver是担任和其他平台同信并认证 3.访问控制概览…

在postman中调试supabase的API接口

文章目录 在supabase中获取API地址和key知道它的restfull风格在postman中进行的设置1、get请求调试2、post新增用户调试3、使用patch更新数据,不用put!4、delete删除数据 总结 在supabase中获取API地址和key 首先登录dashboard后台,首页- 右…

InfluxDB时序数据库基本使用介绍

1、概要介绍 1.1、时序数据库使用场景 所谓时序数据库就是按照一定规则的时间序列进行数据读写操作的数据库。它们常被用于以下业务场景: 物联网IOT场景:可用于IOT设备的指标、状态监控数据存取。IT建设场景:可用于服务器、虚拟机、容器的…