解析Nginx配置文件conf中的常用块

解析Nginx配置文件conf中的常用块

Nginx是一个高性能的HTTP和反向代理服务器,它的配置文件主要由多个块组成。本文将介绍Nginx配置文件中的常用块及其功能

  1. events块
    events块用于设置Nginx的工作模式和连接数相关的参数。
events {worker_connections  1024; # 单个工作进程的最大连接数
}
  1. http块
    http块用于配置Nginx处理HTTP请求的相关参数。
http {include       mime.types; # 包含MIME类型文件default_type  application/octet-stream; # 默认MIME类型sendfile        on; # 开启高效文件传输模式keepalive_timeout  65; # 长连接超时时间(秒)gzip  on; # 开启GZIP压缩
}
  1. server块
    server块用于配置一个虚拟主机。可以有多个server块,但只能有一个server块包含listen指令。
server {listen       80; # 监听端口server_name  example.com; # 域名root         /var/www/example.com; # 网站根目录index        index.html index.htm; # 默认首页文件名
}
  1. location块
    location块用于匹配URL路径,并配置相应的处理方式。可以有多个location块。

4.1 location /块

location / {root   /usr/share/nginx/html; # 网站根目录index  index.html index.htm; # 默认首页文件名
}

4.2 location ~ .php$块

location ~ \.php$ {root           /usr/share/nginx/html; # PHP脚本根目录fastcgi_pass   127.0.0.1:9000; # PHP-FPM地址和端口fastcgi_index  index.php; # PHP-FPM默认文件名fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # PHP-FPM参数include        fastcgi_params; # 包含PHP-FPM参数文件
}
  1. upstream块
    upstream块用于配置后端服务器组,实现负载均衡。可以有多个upstream块。
upstream backend {server backend1.example.com weight=3; # 权重为3的后端服务器1server backend2.example.com; # 后端服务器2,权重默认为1
}
  1. proxy_pass指令
    proxy_pass指令用于将请求转发到后端服务器。通常用在location或if块中。
location /api {proxy_pass http://backend; # 将请求转发到名为backend的upstream中定义的服务器组
}
  1. try_files指令
    try_files指令用于尝试按顺序查找文件。如果找到,则直接返回文件内容;否则,继续查找其他指令。通常用在location或if块中。
location / {try_files $uri $uri/ =404; # 按顺序查找文件,找不到则返回404错误页面
}
  1. map指令和split_clients模块(仅适用于Nginx Plus)
    map指令和split_clients模块可以实现基于客户端IP地址的会话亲和性。这在需要将特定用户群分配到特定服务器的场景中非常有用。需要注意的是,这个功能仅适用于Nginx Plus版本。

首先,需要在编译Nginx时启用split_clients模块:

--with-http_split_clients_module # 在configure命令中添加该选项,然后重新编译Nginx

然后,在配置文件中使用map指令和split_clients模块:

http {...map $remote_addr $backend { # 根据客户端IP地址映射到后端服务器组名的变量值,例如:192.168.1.1 -> "backend1",192.168.1.2 -> "backend2" ... } # 根据实际需求自定义映射关系 split_clients "$backend"; # 根据上一步定义的变量值进行会话亲和性分配 ... server { ... } ... } } } } } } } } } } } } } } } } } } } } } } } } } } } } ... server { ... } ... } } } } } } } ... } } ... } ... } ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... # 根据实际需求自定义后端服务器组和相关配置信息... server { listen 80; server_name example.com; location / { root /var/www/example.com; index index.html index.htm; try_files $uri $uri/ =404; } location /api { map $backend $backend_host { default "backend1"; ~^backend[1-9]$ "backend2"; ~^backend[1-9][0-9]$ "backend3"; ~^backend[1-9][0-9][0-9]$ "backend4"; ~^backend[1-9][0-9][0-9][0-9]$ "backend5"; ~^backend[1-9][0-9][0-9][0-9][0-9]$ "backend6"; ~^backend[1-9][0-9][0-9][0-9][0-9][0-9]$ "backend7"; ~^backend[1-9][0-9][0-9][0-9][0-9][0-9][0-9]$ "backend8"; ~^backend[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$ "backend9"; } set $backend "${backend}${remote_addr}"; set $backend_host "${backend_host}:8080"; proxy_pass http://$backend_host; }}}'d

结尾

以上就是本期的全部内容!一键三连拜谢!

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

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

相关文章

用python调用Mybatis

要使用Python调用MyBatis,您需要按照以下步骤进行操作: 安装MyBatis和相关依赖库 在Python中使用MyBatis,需要先安装MyBatis和相关依赖库。您可以使用pip命令安装MyBatis的Python客户端库,例如: shell复制代码 pip …

Linux的SSH远程管理和服务器之间的免密连接

目录 一、远程管理基础 1.ssh协议 2.ssh原理 3、使用ssh协议传输的命令 4.登录方法 二、免密连接 1.免密连接的原理 2.实战 一、远程管理基础 1.ssh协议 ssh协议是基于C/S机构的安全通道协议,通信数据进行加密处理,用于远程管理。 ssh的服务名…

MATLAB二维与三维绘图实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

【图解数据结构】深入剖析时间复杂度与空间复杂度的奥秘

🌈个人主页:聆风吟 🔥系列专栏:图解数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️算法的定义二. ⛳️算法的特性2.1 🔔输入输出2.2 🔔输入输出2.3 &…

MySQL面试题2

文章目录 面试题 (9-15) 面试题 (9-15) 09)查询学过「张三」老师授课的同学的信息 SELECT s.*,c.cname,t.tname FROM t_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score sc WHERE t.tidc.tid and c.cidsc.cid and sc.sids.sid and tname ‘张…

24校招,Moka测试开发工程师一面

前言 大家好,今天回顾一下楼主当时参加moka测试开发工程师的面试 对其中一些重要问题,我也给出了相应的答案 过程 自我介绍挑一个项目,详细介绍你在其中担任的职责如何安排工作的,有什么成果?回归测试如何设计&…

网站建设网络设计营销类网站eyouCMS模板(PC+WAP)

模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统,原创设计、手工书写DIVCSS,完美兼容IE7、Firefox、Chrome、360浏览器等;主流浏览器;结构容易优化;多终端均可正常预览。

【面试合集】说说微信小程序的登录流程?

面试官:说说微信小程序的登录流程? 一、背景 传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行…

线程安全2

文章目录 锁的可重入性死锁内存可见性引起的线程安全 锁的可重入性 直观来看这个代码不能运行 为啥没有出现阻塞? 当前由于是同一个线程,此时的锁对象,就知道了第二次加锁的线程,就是持有锁的线程,第二次操作&#xff…

前端开发必备:掌握正则表达式,轻松应对复杂的表单验证

前言 在前端开发中,经常需要处理 URL 地址、校验手机号合法性、提取域名等。正则表达式是一种常用的工具。通过使用正则表达式,我们可以对用户输入进行有效的验证,确保数据的合法性和完整性。本文将介绍一些常见的正则表达式,帮助…

C++面试:单例模式、工厂模式等简单的设计模式 创建型、结构型、行为型设计模式的应用技巧

理解和能够实现基本的设计模式是非常重要的。这里,我们将探讨两种常见的设计模式:单例模式和工厂模式,并提供一些面试准备的建议。 目录 单例模式 (Singleton Pattern) 工厂模式 (Factory Pattern) 面试准备 1. 理解设计模式的基本概念…

SpringMVC中拦截器的简单使用

步骤一:创建拦截器类 首先,我们需要创建一个拦截器类,该类需要实现HandlerInterceptor接口。这个接口定义了三个方法,分别在请求处理前、请求处理后和视图渲染后执行。 import org.springframework.web.servlet.HandlerIntercep…

使用JDK自带的jvisualvm工具查看堆dump文件【回顾】

JDK自带的jvisualvm的使用 打开方式: 直接命令行输入:jvisualvm ,然后回车​​​​​​​ ​​ 或者去jdk的bin目录下找到打开 安装visual GC插件 检测死锁 再点击“死锁 dump”就可以看到死锁的线程信息了;

LeeCode前端算法基础100题(17)- 罗马数字转整数

一、问题详情: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 …

linux c语言记录内核错误

在 Linux C 程序中,将信息记录在日志文件中通常使用 syslog 守护进程来实现。你可以使用 syslog() 函数将自定义的错误信息记录到系统日志中。另外,你也可以使用开源库如 liblog,log4c 等来更加灵活地记录日志。 下面是一个简单的示例代码&a…

Vulnhub靶机:driftingblues 4

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues4(10.0.2.20) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…

【Python数据分析系列】实现txt文件与列表(list)相互读写转换(源码+案例)

这是Python数据分析系列原创文章,我的第199篇原创文章。 一、问题 平时在做数据分析或者程序开发的时候,需要将中间的一些结果或最后的处理结果保存下来,比如保存为txt格式的文本文件,这就涉及列表与txt之间的一种读取和写入操作…

spring cloud feign demo

1. 工程结构 2. 父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

JVM实战(17)——模拟对象晋升

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…