Nginx反向代理服务

Nginx反向代理服务

Nginx代理服务基本概述

什么是代理

代理一词往往并不陌生, 该服务我们常常用到如(代理理财、代理租房、代理收货等等),如下图所示

image

没有代理情况

在没有代理模式的情况下,客户端和Nginx服务端,都是客户端直接请求服务端,服务端直接响应客户端

image

企业场景

那么在互联网请求里面,客户端往往无法直接向服务端发起请求,那么就需要用到代理服务,来实现客户端和服务通信,如下图所示

image

Nginx代理服务常见模式

Nginx作为代理服务,按照应用场景模式进行总结,代理分为正向代理、反向代理

正向代理

正向代理,(内部上网)客户端<—>代理->服务端

image

反向代理

反向代理,用于公司集群架构中,客户端->代理<—>服务端

image

正向代理与反向代理的区别

1.区别在于形式上服务的”对象”不一样

2.正向代理代理的对象是客户端,为客户端服务

3.反向代理代理的对象是服务端,为服务端服务

Nginx代理服务支持协议

Nginx作为代理服务,可支持的代理协议非常的多,具体如下图

img

反向代理使用协议

如果将Nginx作为反向代理服务,常常会用到如下几种代理协议,如下图所示

img

反向代理模块

反向代理模式与Nginx代理模块总结如表格所示

反向代理模式 Nginx****配置模块
http、websocket、https ngx_http_proxy_module
fastcgi ngx_http_fastcgi_module
uwsgi ngx_http_uwsgi_module
grpc ngx_http_v2_module

环境准备

主机名 角色 外网IP 内网IP
lb01 反向代理服务器 10.0.0.5 172.16.1.5
web01 被代理的服务器 10.0.0.7 172.16.1.7

部署代理服务器

# 1.安装nginx
[root@lb01 ~]# yum install -y nginx

# 2.修改nginx的配置文件
[root@lb01 ~]# vim /etc/nginx/conf.d/proxy.conf
server{
	listen 80;
	server_name blog.drz.com;
	
	location / {
		proxy_pass http://172.16.1.7:80;
	}
}

# 3.本地域名解析C:\Windows\System32\drivers\etc\hosts
10.0.0.5 blog.drz.com
## 代理172.16.1.7的80端口
proxy_pass http://172.16.1.7:80;

## 存在问题,后端网站是通过IP访问的,没有通过域名
proxy_set_header Host $http_host; ## 将域名放入请求头中,带到后端

server{
	listen 80;
	server_name zh.drz.com;
	
	location / {
		proxy_pass http://172.16.1.7:80;
		proxy_set_header Host $http_host;
	}
}

## 存在问题,后端无法获取真实用户IP,只能获取代理服务器IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ## 透传用户的真实ip到web服务器
server{
	listen 80;
	server_name zh.drz.com;
	
	location / {
		proxy_pass http://172.16.1.7:80;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

## 减少代理的配置
[root@lb01 nginx]# vim /etc/nginx/proxy_params
## 将域名放入请求头中,带到后端
proxy_set_header Host $http_host;
 ## 透传用户的真实ip到web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# http1.1版本
proxy_http_version 1.1;
# 代理到web服务器的连接超时时间
proxy_connect_timeout 60;
# web服务器回传数据给代理服务器的超时时间
proxy_send_timeout 60;
# 代理服务器等待web服务器的响应时间
proxy_read_timeout 60;
# 开启缓冲区
proxy_buffering on;
# 请求头缓冲区的大小
proxy_buffer_size 32k;
# 开启4个缓冲区,每个缓冲区大小为128k
proxy_buffers 4 128k;

## 代理配置文件
[root@lb01 nginx]# vim /etc/nginx/conf.d/proxy.conf
server{
	listen 80;
	server_name zh.drz.com;
	
	location / {
		proxy_pass http://172.16.1.7:80;
		include /etc/nginx/proxy_params;
	}
}
posted @ 2021-08-07 11:49  平凡的人不平凡的事  阅读(962)  评论(0编辑  收藏  举报