Nginx
- 什么是Nginx
- 使用场景
- 使用案例
- 面试
重点
- 反向代理,负载均衡,配置文件各模块的理解
- 反向代理和负载均衡的搭建
?
- Nginx 在分布式中的应用
参考
https://www.cnblogs.com/ysocean/p/9384877.html
https://www.cnblogs.com/54chensongxia/p/12938929.html
概述
什么是Nginx
代理服务器:Nginx 常用来做负载均衡和反向代理,比如一个服务性能有限,可以创建多个服务实例,通过Nginx配置,对外表现为只有一个服务(提供一个域名,再转发到内网),所有请求到Nginx,Nginx再转发的某个服务,官方测试能够支撑 5 万的并发量;运行时内存和 CPU 占用率低。
常用命令
sbin目录下执行./nginx
启动nginx
./nginx -s stop
停止Nginx
./nginx -s quit
平缓停止,可以将当前正在处理的请求执行完
./nginx -s reload
重启Nginx
nginx -t -c /usr/local/nginx/conf/nginx.conf
检测配置文件语法是否正确
正向代理和反向代理的区别
- 正向代理代理的是客户端,反向代理代理的是服务端
- 反向代理
- 负载均衡
nginx的负载均衡策略
- 轮询
- 设置权重
- 一致性hash,ipHash与url_hash
使用
安装
配置文件
- 一个 http 配多个 server
精简后的主体结构
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
全局块
woker_processes 2
,工作进程数可以设置成CPU核心数
events
worker_connections 1024;
表示每个 work process 支持的最大连接数为 1024.
http
server
每个 server 都是一个虚拟主机(站点)Nginx 收到请求会根据 host 和 port 来匹配 server
location
一个 server 块可以配置多个 location 块, 已经根据 host 和 port 匹配到 server 了,然后根据剩下的请求字符串来匹配 location
匹配规则
指定前缀
必须以abc开始
location /abc {
}
=
表示必须请求匹配
uri必须是/abc
location /abc {
}
location遵循最大前缀匹配结果
反向代理
正向代理代理客户端,反向代理代理服务器。
反向代理:
多个服务对外表现为一个服务器,客户端直接访问代理服务器,反向代理决定请求哪个服务器。
为什么要进行反向代理?
配置
server{
listen 监听的端口号;
server_name 监听的主机名;
location /mail {
proxy_pass http://127.0.0.1:8080
index
}
location /phone {
proxy_pass http://127.0.0.1:8081
index 默认首页
}
}
负载均衡
就是配置一个upstream,location中的proxy_pass中使用upstream的名字
配置upstream
upstream OrdinaryPolling {
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://OrdinaryPolling;
index index.html index.htm index.jsp;
}
}
可以进行加权
负载均衡策略
- 轮询(能够自动剔除故障的服务器)
- 权重(weigth越大,访问概率越高)
- ip_hash,相同请求地址会分到同一个后端服务,保证session共享
动静分离
静态资源就是HTML,IMG等这些可以直接访问的文件
动态资源则是需要后端进行计算的资源
location ~* \.(png|jpg|mp4)${
#指定图片路径
root /code/wordpress/images;
#压缩
gzip on;
.....
}
虚拟主机
虚拟主机
把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器
跨域问题
跨域问题由浏览器的同源策略造成的,同源是指协议,host和port都需要相同
使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址。
高可用
keepalived
Nginx是怎么处理请求的
先根据请求的server_name和port定位到一个server,然后匹配location
Nginx做限流
Nginx中使用ngx_http_limit_req_module模块来限制的访问频率,限制的原理实质是基于漏桶算法原理来实现的。在nginx.conf配置文件中可以使用limit_req_zone命令及limit_req命令限制单个IP的请求处理频率。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异