nginx常用配置详解

ops/2024/9/26 3:19:10/

先上一个nginx配置样例

#nginx的进程数,建议设置为CPU总核心数
worker_processes 1;
events {# 单个进程最大连接数(最大连接数=连接数*进程数)worker_connections 1024;
}
http {# include: 导入外部文件mime.typesinclude mime.types;default_type application/octet-stream;#开启高效文件传输模式,sendfile指令指定nginx是否使用sendfile函数来输出文件#对于普通应用设置为on,如果用于下载等磁盘IO重负载应用,可设置为off,来平衡磁盘和网络IO速度,降低系统负载。sendfile on;#长连接超时时间,单位秒keepalive_timeout 65;#server区块表示独立的虚拟主机站点server {#监听端口listen 80;#提供服务的域名/主机名server_name localhost;#location区块,对/开头的所有请求启用反向代理location / {root html; #访问资源所在目录index index.html index.htm; #默认的首页文件# 错误页面路由error_page 500 502 503 504 /50x.html; #出现对应的http状态码时,使用50x页面回应客户location = 50x.html {root html;}}}
}

一、整体结构

全局块

作用:从配置文件开始到events块之间的内容,设置一些会影响nginx服务器整体运行的配置指令,主要包括运行nginx服务器的用户(组)、允许生成的worker progress数、进程PID存放路径、日志存放路径。

worker_progresses 1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

events块

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

http块

这是nginx配置中最多的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的功能都在这里配置。http块包括http全局块和server块。

http全局块

http全局块配置的指令包括mime-type定义、include其他配置文件、日志定义、连接超时时间、连接请求数上限等。

server块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是一样的。该技术的产生是为了节省互联网服务器硬件成本。

每个http块可以包括多个server块。每个server块也包括server全局块、location块。

全局server块

虚拟主机的监听端口、虚拟主机的ip或名称配置

location块
这块的主要作用是基于Nginx服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行匹配。

对特定的请求进行处理,地址定向、数据缓存和应答控制等功能。

还有许多第三方模块的配置也在这里进行。

二、按功能配置

某些请求访问其他资源目录

使用alias指令

location /upload/ {alias /www/upload/;
}

反向代理

以下配置将请求重定向到其他服务地址。

 location /api/ {proxy_redirect off;proxy_set_header Host $host:$server_port; #添加:$server_portproxy_set_header X-Real-IP $remote_addr; #代理前的远程地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://127.0.0.1:8087/;}

代理分为正向代理和反向代理

什么是正向代理?国内访问不了Google,那么怎么才能访问Google呢?如果我们电脑的对外公网IP变成美国的IP地址,就可以访问Google了,VPN就是这样产生的。我们在访问Google时,先连上VPN服务器将我们的IP地址变成美国的IP地址,然后就可以顺利地访问了。

什么是反向代理反向代理对客户端是无感知的,因为客户端不需要做任何配置就可以访问。我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后返回给客户端。

两者的区别:正向代理代理客户端,反向代理代理服务器。正向代理关注客户端的访问需求和安全性,反向代理更注重服务器端的负载均衡、安全性和性能优化。

反向代理服务可以衍生出很多与此相关的Nginx服务器重要功能,比如负载均衡。

负载均衡

将请求分配到多个服务上,分配的方式包括轮询、权重、iphash、最少连接、fair

轮询是Nginx负载默认的方式,所有的请求依次分配到不同的服务上,如果某个服务down掉,可以自动剔除。

upstream roll-server {server localhost:1001;server localhost:1002;
}

权重模式,指定每个服务的权重,weight和访问率成正比。

upstream weight-server {server localhost:1001 weight=1;server localhost:1002 weight=2;
}

iphash模式,根据访问的ip的hash结果分配,经过这样的处理,每个访客访问一个固定的后端服务,如下为iphash和weight混合使用的例子。

upstream iphash-server {iphash;server localhost:1001 weight=1;server localhost:1002 weight=2;
}

最少连接模式,将请求分配到连接数最少的服务上。

upstream least-server {least_conn;server localhost:1001;server localhost:1002;
}

fair模式,按后端服务器的响应时间来分配请求,响应时间短的优先匹配。

upstream fair-server {server localhost:1001;server localhost:1002;fair;
}

以轮询模式为例,完整的配置代码如下:

http {upstream roll-server {server localhost:1001;server localhost:1002;}server {listen 1000;server_name localhost;location / {proxy_pass http://roll-server;proxy_redirect default;}}
}

增加ssl支持

listen 443 ssl; #增加ssl
server_name xxxx;
ssl_certificate /usr/local/nginx/conf/cert/xxxx.pem; #证书
ssl_certificate_key /usr/local/nginx/conf/cert/xxxx.key; #秘钥
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

视频流服务

nginx还可以配置视频流播放服务,代理转发视频流,详见 nginx安装配置视频服务器_nginx配置视频文件服务器-CSDN博客


http://www.ppmy.cn/ops/97910.html

相关文章

(LLM) 很笨

大型语言模型 (LLM) 并非你所想的那样。你被骗了。LLM 很笨,非常笨。事实上,它们更接近数据库,而不是人类。 这就是为什么人工智能仍然处于征服智能的第一步……如果有的话。 终极煤气灯效应 建立前沿人工智能的成本很高。前沿人工智能需要大…

笔记分享: 香港中文大学CSCI5610高级数据结构——最邻近查询

文章目录 Approximate Nearest Neighbor Search \textbf{Approximate Nearest Neighbor Search} Approximate Nearest Neighbor Search 1. Doubling Dimension \textbf{1. Doubling Dimension} 1. Doubling Dimension 1.0. Intro \textbf{1.0. Intro} 1.0. Intro 1.1. Doubling…

【ACM出版,高录用EI快检索】第七届计算机信息科学与人工智能国际学术会议(CISAI 2024,9月6-8)

第七届计算机信息科学与人工智能国际学术会议(CISAI 2024) 将于2024年09月6-8日在中国浙江-绍兴举行。 计算机信息科学与人工智能国际学术会议的主题主要围绕“信息科学”与“人工智能”的最新研究展开,旨在荟聚世界各地该领域的专家、学者、研究人员及相关从业人员…

Python版《超级玛丽+源码》-Python制作超级玛丽游戏

小时候最喜欢玩的小游戏就是超级玛丽了,有刺激有又技巧,通关真的很难,救下小公主还被抓走了,唉,心累,最后还是硬着头皮继续闯,终于要通关了,之后再玩还是没有那么容易,哈…

OpenAI 推出名为 GPT-4o mini 的迷你 AI 模型,该款模型设计有哪些亮点?

升级的 OpenAI GPT-4o mini是一种设计精巧的迷你 AI 模型,它有几个显著的亮点: 紧凑的模型规模:GPT-4o mini 相较于其他大型模型,具有更小的体积,这使得它在资源有限的设备上运行变得更加高效。 高效的性能&#xff…

virtualbox从u盘启动

1.添加到vboxusers用户组 sudo usermod -G vboxusers -a whoami 2.为u盘设备添加访问权限,注意替换对应的设备文件,我这里是/dev/sdf sudo chmod orw /dev/sdf 3.为u盘创建一个虚拟的硬盘镜像 sudo VBoxManage internalcommands createrawvmdk -fi…

【vue3|第24期】深入了解useRouter:方法、属性与使用示例

日期:2024年8月20日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

【Redis】单线程架构

单线程架构 1. 引出单线程模型2. 为什么单线程还能这么快 Redis 使⽤了单线程架构来实现⾼性能的内存数据库服务 1. 引出单线程模型 我们已经知道从客⼾端发送的命令经历了:发送命令、执⾏命令、返回结果三个阶段,其中我们重点关注第 2 步。我们所谓的 …