一文带你深入Nginx,由基础到进阶,包你轻松入门Nginx

客户端、服务端 通过 正向代理服务器、反向代理服务器 进行数据的交互。

一文带你深入Nginx,由基础到进阶,包你轻松入门Nginx_第1张图片

[](()三、负载均衡、动静分离

===============================================================================

[](()

1、负载均衡

(1)为什么出现负载均衡?

一个小型的项目,一台服务器可以处理(可以提升机器硬件的能力)。

对于大型的项目,一台服务器处理起来,效率会很低下,采用 多台服务器 进行处理可以提高处理效率,但是请求如何到达服务器、各个服务器处理请求的数量 是需要解决的问题。

可以采用 反向代理 去代理多个服务器(解决请求到达服务器问题),并 根据某种规则 指定 服务器处理请求,使各个服务器处理请求的数量尽量均匀,即负载均衡(解决服务器处理请求问题)。

如下图所示:

客户端发送了 1000 个请求到 反向代理服务器。

反向代理服务器通过某种负载均衡算法,将请求分发到不同的真实服务器上处理。

比如真实服务器 A 处理了 320 个请求,B 处理了 350 个请求,C 处理了 330 个请求。

一文带你深入Nginx,由基础到进阶,包你轻松入门Nginx_第2张图片

(2)负载量?均衡?什么是负载均衡?

Nginx 在负载均衡中的角色 就是 反向代理服务器。

负载量 实质指的是 客户端发送、被 反向代理服务器 接收到的请求数量。

均衡 实质指的是 按照某种规则,反向代理服务器 将接受的请求 发送给不同的 真实服务器处理(使各个真实服务器处理的请求量尽量均匀)。

所以负载均衡 实质指的是 反向代理服务器接收请求、并按照某种规则发送到 不同的真实服务器 处理的过程。

(3)负载均衡的方式?

负载均衡可以分为 硬件负载均衡、软件负载均衡。

硬件负载均衡 一般造价昂贵,但数据传输更加稳定。比如: F5 负载均衡。

软件负载均衡 一般采用 某种 负载均衡 算法实现(一种消息队列分发机制)。

[](()

2、动静分离

为了加快网站的解析速度,通常会将 动态页面静态页面内容 放在不同的服务器上处理,从而降低单个服务器的压力,加快解析速度。

动静分离实质就是将 动态资源 与 静态资源分开,放在不同的服务器上处理。

如下图:

真实服务器分为 动态资源处理服务器 与 静态资源处理服务器,反向代理根据不同的业务需求,将处理发送到不同的服务器上处理并返回内容。

一文带你深入Nginx,由基础到进阶,包你轻松入门Nginx_第3张图片

五、Nginx 实现反向代理


[](()

1、实现效果?

使用 nginx 作为反向代理,根据访问路径的不同跳转到不同端口的服务中进行处理。

其中:

nginx 监听 80 端口(可省略),

访问:

http://120.26.184.41/blog,跳转到 https://www.cnblogs.com/l-y-h/。

http://120.26.184.41/baidu,跳转到 https://www.baidu.com/。

[](()

2、修改 nginx 配置文件

(1)配置文件简单分析

/etc/nginx/conf.d/default.conf 配置文件如下:

【配置文件中常用关键字解析:(server 块)】

listen 用于配置网络监听、监听端口、IP地址等。

比如:

listen port 监听 port 端口的所有的连接。

listen IP_address 监听 IP_address 所有端口。

listen IP_address:port 监听 IP_address 的 port 端口。

server_name 用于设置虚拟主机,可以为 域名、IP地址。

location 用于匹配 URL。

比如:

location = uri 表示严格匹配 uri,非正则表达式匹配。

location ~ uri 正则表达式匹配,区分大小写。

location ~* uri 正则表达式匹配,不区分大小写。

【location 块中常用关键字解析:】

proxy_pass 用于设置被代理服务器的地址

index 用于设置网站默认首页

【/etc/nginx/conf.d/default.conf 配置文件如下:】

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log /var/log/nginx/host.access.log main;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

}

#error_page 404 /404.html;

redirect server error pages to the static page /50x.html

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

proxy the PHP scripts to Apache listening on 127.0.0.1:80

#location ~ .php$ {

proxy_pass http://127.0.0.1;

#}

pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

#}

deny access to .htaccess files, if Apache’s document root

concurs with nginx’s one

#location ~ /.ht {

deny all;

#}

}

(2)修改 nginx.conf 配置文件,用于添加代理映射。
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】

【添加映射关系:(server 块)】

server {

listen 80;

server_name localhost;

location /blog/ {

proxy_pass https://www.cnblogs.com/l-y-h/;

}

location /baidu/ {

proxy_pass https://www.baidu.com/;

}

}

【完整 nginx.conf】

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

你可能感兴趣的:(Java,经验分享,架构,java)