Nginx proxy 代理
1.代理的作用:
- 提高服务器处理性能:随着用户数量的增加,单个服务器处理大量请求的能力有限,通过使用反向代理,可以将请求分散到多个服务器上,从而提高整体的处理能力和效率。
- 负载均衡:反向代理可以作为负载均衡器,将客户端的请求均匀地分配到后端的
**相同服务**
器群中,确保每个服务器的负载处于合理水平,避免某单一服务器过载而影响服务质量。 - 安全性提升:反向代理可以隐藏后端服务器的真实IP地址,增加系统的安全性。保护内部网络不受外界直接访问。
- 缓存静态内容:反向代理服务器可以缓存静态内容,如图片、CSS和JavaScript文件,这样可以减少对后端服务器的重复请求,加快内容的加载速度。
2.反向代理服务的实现:
- 配置反向代理服务器:首先需要设置一个反向代理服务器,可以是Nginx、Apache等常见的Web服务器软件。在服务器上进行相应的配置,指定后端服务器的地址和端口号。
- 安装和配置后端服务器:根据具体需求,选择并安装适当的后端服务器软件,如Tomcat、Node.js等。然后对后端服务器进行配置。
- 配置反向代理规则:在反向代理服务器上配置转发规则,将客户端的请求转发到正确的后端服务器。这可以通过修改配置文件或使用特定的命令来实现。
3.正向代理和反向代理的区别
- 代理对象不同:正向代理的代理对象是客户端,它位于客户端和目标服务器之间,客户端通过代理服务器发送请求到目标服务器,并从目标服务器获取内容;反向代理的代理对象是服务器,它位于客户端和目标服务器之间,客户端的请求直接发送到反向代理服务器,然后由反向代理服务器将请求转发给目标服务器。
- 使用场景不同:正向代理通常用于访问被限制或不可访问的内容,或者在内部网络中提供对外访问的方式。反向代理则主要用于实现负载均衡、安全策略、缓存等功能,提高网站性能和可用性。
- 设置需求不同:正向代理通常需要客户端进行设置,以使其通过代理服务器进行访问,这通常涉及到在客户端的网络设置中指定代理服务器的IP地址和端口号。反向代理则通常不需要客户端进行任何设置,客户端发出的请求直接发送到反向代理服务器,然后由反向代理服务器转发请求到后端真实服务器。
- 安全性不同:正向代理隐藏客户端的IP地址和身份信息,因为请求是通过代理服务器发出的。反向代理隐藏服务器的真实IP地址和身份信息,客户无需知道后端服务的真实地址。因为请求是直接发送到反向代理服务器,然后由反向代理服务器将请求转发给目标服务器。
反向代理中,
proxy
和
server
同属一个LAN,反向代理中代理的对象是服务端,proxy和server同属一个LAN,对client透明:
正向代理中代理的对象是客户端,proxy和client同属一个LAN,对server透明:
4.常用的集群软件
- 开源:LVS,Keepalived,Haproxy,Nginx
- 商业:F5
5.Nginx proxy 模块配置【反向代理】
准备两台nginx主机,一台为代理服务器(40),一台为后端服务器(30)。
vim /etc/nginx/conf.d/pass_server.conf
# 反向代理配置
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.137.30:80;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
}
参数解释
proxy_pass http://192.168.137.30:80; # 代理的真实后端地址;
proxy_set_header # proxy_set_header指令来设置代理服务器向后端服务器发送的请求头部信息。在这个例子中,proxy_set_header Host $http_host;表示将客户端请求的Host头部信息(即$http_host变量)设置为代理服务器向后端服务器发送的请求头部信息中的Host字段。
proxy_set_header****X-Real-IP $remote_addr; # 使用proxy_set_header指令来设置代理服务器向后端服务器发送的请求头部信息。在这个例子中,proxy_set_header X-Real-IP $remote_addr;表示将客户端的IP地址(即$remote_addr变量)设置为代理服务器向后端服务器发送的请求头部信息中的X-Real-IP字段。
*proxy_set_header***X-Forwarded-For $proxy_add_x_forwarded_for; ** # 将客户端的IP地址和代理服务器的IP地址一起传递给后端服务器。
proxy_connect_timeout 30; # proxy_connect_timeout指令来设置代理服务器与后端服务器建立连接的超时时间。
proxy_send_timeout 60; # proxy_send_timeout指令来设置代理服务器向后端服务器发送请求的超时时间。
proxy_read_timeout 60; # proxy_read_timeout指令来设置代理服务器从后端服务器接收响应的超时时间。
proxy_buffering on; # proxy_buffering on;表示开启代理服务器的缓冲功能。目的是为了让代理服务器能够缓存从后端服务器接收到的响应数据,从而提高整体的性能和用户体验。通过开启代理服务器的缓冲功能,可以确保代理服务器能够将响应数据缓存起来,从而减少与后端服务器之间的通信次数,提高响应速度。
proxy_buffer_size 32k; # proxy_buffer_size指令来设置代理服务器缓冲区的大小。
proxy_buffers 4 128k; # 代理服务器的缓冲区数量和每个缓冲区的大小。这个参数决定了Nginx在代理客户端请求时用于缓存后端服务器响应的缓冲区的总数量和每个缓冲区的最大容量。4:这是缓冲区的数量,即Nginx将创建4个缓冲区来存储来自后端服务器的响应数据。128k:这是每个缓冲区的大小,即每个缓冲区可以存储最多128KB的数据。
proxy_busy_buffers_size 256k; # 设置代理服务器的繁忙缓冲区大小。这个参数决定了Nginx在处理高负载时,用于缓存后端服务器响应的额外缓冲区的大小。
proxy_max_temp_file_size 256k; # 设置代理服务器的最大临时文件大小。
注意事项: buffer 缓冲区
- 并发连接数:更多的并发连接意味着需要更多的繁忙缓冲区。每个连接可能会使用一个繁忙缓冲区,因此需要根据预期的并发量来设置繁忙缓冲区的数量。
- 响应大小:如果后端服务器返回的响应体通常较大,可能需要增加繁忙缓冲区的大小以避免性能问题。同时,如果响应体很小,那么过多的繁忙缓冲区或过大的繁忙缓冲区可能会浪费内存。
- 内存限制:Nginx的繁忙缓冲区大小不能无限制地增加,因为服务器的内存是有限的。必须确保繁忙缓冲区的配置不会消耗过多的内存,影响其他进程或服务的性能。
- 后端服务器性能:后端服务器的响应速度也会影响繁忙缓冲区大小的设置。如果后端服务器响应迅速,可能不需要很大的繁忙缓冲区;如果响应慢,较大的繁忙缓冲区可以减少Nginx等待数据的时间。
# 后台服务端的配置:40机器
vim /etc/nginx/conf.d/default.conf
#
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# 测试:
输入:192.168.137.40
cat /var/log/nginx/access.log
版权归原作者 散落在麦田的星 所有, 如有侵权,请联系我们删除。