nginx Proxy反向的代理

nginx Proxy 代理

代理原理

  • 反向代理产生的背景:

    在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。

  • 反向代理服务的实现:

    需要有一个负载均衡设备(即反向代理服务器)来分发用户请求,将用户请求分发到空闲的服务器上。
    服务器返回自己的服务到负载均衡<设备。
    负载均衡设备将服务器的服务返回用户。
    在这里插入图片描述
    在这里插入图片描述

nginx Proxy配置

1.代理模块
ngx_http_proxy_module
2.代理配置
代理
Syntax: proxy_pass URL; #代理的后端服务器URL
Default: —
Context: location, if in location, limit_except

头信息
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host; #设置真实客户端地址
proxy_set_header Connection close;
Context: http, server, location

超时
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s; #链接超时
Context: http, server, location

Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location

Syntax: proxy_send_timeout time; #nginx进程向fastcgi进程发送request的整个过程的超时时间
Default: proxy_send_timeout 60s;
Context: http, server, location

启动nginx proxy代理

配置两台nginx真实服务器
a.nginx -1启动网站(内容)(作为网站服务器)

nginx-1的ip:192.168.62.157
已经编译安装好,检查nginx是否启动是否可以访问
[root@nginx-server ~]# cat /home/www/html/index.html
1000phone

[root@nginx-server ~]# cat /etc/nginx/conf.d/aa.conf
server {
listen 80;
server_name localhost;
location / {
root /home/www/html;
index index.html index.hml;
}
}

b、nginx-2 启动代理程序
nginx-2的ip:192.168.62.159
配置nginx的yum源直接yum安装
启动
编辑nginx的配置文件(编辑之前,删除/注释掉之前的配置):
[root@nginx-server ~]# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;

location / {
proxy_pass http://192.168.62.157:80;
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;
}

}
重新加载nginx配置文件
[root@nginx-server ~]# nginx -s reload

nginx proxy 具体配置详解
proxy_pass :真实服务器的地址,可以是ip也可以是域名和url地址
proxy_set_header:重新定义或者添加发往后端服务器的请求头
proxy_set_header X-Real-IP :启用客户端真实地址(否则日志中显示的是代理在访问网站)
proxy_set_header X-Forwarded-For:记录代理地址

proxy_connect_timeout:后端服务器连接的超时时间发起三次握手等候响应超时时间
proxy_send_timeout:后端服务器数据回传时间就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout :nginx接收upstream(上游/真实) server数据超时, 默认60s, 如果连续的60s内没有收到1个字节, 连接关闭。像长连接

在这里插入图片描述
proxy_set_header X-Real-IP
未配置
Nginxbackend 的日志:记录只有192.168.107.112
配置
Nginxbackend 的日志,记录的有192.168.162.16 192.168.107.107 192.168.107.112

使用PC客户端访问nginx-2服务器地址
浏览器中输入http://192.168.62.159/ (也可以是nginx-2服务器的域名)

猜你喜欢

转载自blog.csdn.net/edcbc/article/details/106244940