Nginx
Nginx
1.什么是nginx
Nginx是一个高性能HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
Nginx转为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数
2.反向代理
(a)正向代理
-
在客户端(浏览器)配置代理服务器,通过代理服务器才能进行互联网访问
(b)反向代理
-
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器的IP地址
3.负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
4.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力
5.nginx配置
a. /
server {
listen 80;
server_name localhost;
default_type text/html;
location / {
echo "hello a";
}
}
/: 表示匹配所有路径,例如/a, /abcde, /a/b/c, ....只要是斜杠开头的均可匹配
b. =
location = /a {
echo "hello b";
}
= /a: 表示精确匹配/a目录,例如/a/, /a/b, /ab, 这些都是不符合匹配规则的
c. ^~ /
^~所代表的意思也是以...开头,只是优先级比只有 /
来的高
location ^~ /a {
echo "hello c";
}
^~ /a: 表示匹配/a开头的路径, 如果输入/a, /a/b, /abc, 会同时匹配到a和c情况,但是c的优先级更高, 所以最终会输出hello c
d. ~ /\w
~:代表是通过正则表达式匹配
\w:是正则中的一个写法,表示匹配所有的数字,字母,下划线
location ~ /\w {
echo "hello d";
}
~ /\w:
e.匹配优先级
匹配优先级b>c>d>a,
优先级相同,匹配程度不同,谁匹配程度高匹配谁,input:/a/b
location ^~ /a { echo "hello a1"; } location ~ /a/b { echo "hello a2"; }
优先级相同,匹配程度也相同,则谁写在前面匹配谁,input:/a
location ~ /\w { echo "hello d1"; } location ~ /[a-z] { echo "hello d2"; } 最终将输出 hello d1
6.反向代理配置
server {
listen 80;
server_name localhost;
default_type text/html;
location / {
proxy_pass http://192.168.0.12:80; #(Apache服务)
}
}
访问80端口,返回Apache服务
localhost:80 -> http://192.168.0.12
location /a {
proxy_pass http://192.168.0.12:80 #(Apache服务)
}
如果直接请求/a, Apache服务会返回Not Found
因为Apache的服务是 192.168.0.12, 如果变成 192.168.0.12/a,那肯定是找不到的
如果说需要将/a转发到Apache服务的/路径下,写法如下
location /a/ {
proxy_pass http://192.168.0.12:80/; #(Apache服务)
}
location /a/ {
proxy_pass http://192.168.0.12:80/; #(Apache服务)
}
location /b/ {
proxy_pass http://192.168.0.12:81/; #(Tomcat服务)
}
7.负载均衡配置
upstream group1 {
# weight 权重配置,均为1为 轮询匹配
# 不加weight则是随机匹配
server 192.168.0.12:80 weight = 1;
server 192.168.0.12:81 weight = 1;
}
server {
listen 80;
server_name localhost;
default_type text/html;
location /a/ {
proxy_pass http://group1/
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)