nginx反向代理配置详解nginx反向代理解决方案NGINX配置反向代理




nginx反向代理配置详解nginx反向代理解决方案NGINX配置反向代理

2022-07-20 20:10:06 网络知识 官方管理员

1.简介

本篇博文是《nginx实现动态/静态文件缓存-技术流ken》的二部曲。将详细介绍nginx如何实现反向代理以及负载均衡技术,并辅以实战案例。

反向代理--“反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。”

负载均衡--“网络专用术语,负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。”

2.nginx实现反向代理

1.几个概念

反向代理:在收到客户端请求之后,会修目标IP地址和端口

正向代理:在收到客户端请求之后,会修源IP地址和端口

上游服务器:代理服务器后端的哪些真正给客户端提供服务的节点,这样的服务器称之为上游服务器

下游服务器:客户端就是下游节点

2.反向代理指令

模块:nginx_http_proxy_module指令proxy_pass:指定上游服务器的ip和端口proxy_set_header:指定在重新封装请求报文的时候,添加一个新的首部Syntax:proxy_passURL;Default:—Context:location,ifinlocation,limit_except例子:proxy_passhttp://10.220.5.200:80;Syntax:proxy_set_headerfieldvalue;Default:proxy_set_headerHost$proxy_host;Context:http,server,location

3.反向代理简单示例

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}

4.反向代理实战案例

1.环境准备

centos7.5

反向代理服务器IP:172.20.10.7/28

web1服务器IP:172.20.10.8/28

web2服务器IP:172.20.10.9/28

2.配置反向代理服务器端

yum安装nignx需要配置网络源,复制下面的代码到你的yum仓库中

[ken]name=kenenabled=1gpgcheck=0baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

安装nginx

[root@ken~]#yuminstallnginx-y

配置nginx文件,我们实现这样一个效果,静态文件都被代理到172.20.10.8,动态文件都被调度到172.20.10.9,实现动静分离。

[root@ken~]#vim/etc/nginx/nginx.conf#Formoreinformationonconfiguration,see:#*OfficialEnglishDocumentation:http://nginx.org/en/docs/#*OfficialRussianDocumentation:http://nginx.org/ru/docs/usernginx;worker_processesauto;error_log/var/log/nginx/error.log;pid/run/nginx.pid;#Loaddynamicmodules.See/usr/share/nginx/README.dynamic.include/usr/share/nginx/modules/*.conf;events{worker_connections1024;}http{log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';access_log/var/log/nginx/access.logmain;sendfileon;tcp_nopushon;tcp_nodelayon;keepalive_timeout65;types_hash_max_size2048;include/etc/nginx/mime.types;default_typeapplication/octet-stream;#include/etc/nginx/conf.d/*.conf;server{listen80default_server;listen[::]:80default_server;server_name_;root/var/www/html;indexindex.htmlindex.php;#Loadconfigurationfilesforthedefaultserverblock.location/{proxy_passhttp://172.20.10.8;proxy_set_headerhost$proxy_host;proxy_set_headerrealip$remote_addr;}location~^/.*(\.php)${proxy_passhttp://172.20.10.9;proxy_set_headerhost$proxy_host;proxy_set_headerrealip$remote_addr;}error_page404/404.html;location=/40x.html{}error_page500502503504/50x.html;location=/50x.html{}}}

进行语法检测

[root@ken~]#nginx-tnginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisoknginx:configurationfile/etc/nginx/nginx.conftestissuccessful

检查没有问题之后进行重启

[root@ken~]#systemctlstartnginx

3.配置web服务器端

安装apache

[root@ken~]#yuminstallhttpd-y

准备测试文件,172.20.10.8准备静态文件

[root@ken~]#echo"thisis172.20.10.8forstatictest">/var/www/html/index.html

172.20.10.9需要下载php以便支持动态文件

[root@kenhtml]#yuminstallphp-y

172.20.10.9准备动态文件,

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}0

4.web服务器重启

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}1

5.关闭安全服务

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}2

6.浏览器测试

请求静态文件测试

nginx反向代理配置详解(nginx反向代理解决方案)(1)

静态文件请求已经成功转发至172.20.10.8。

测试成功!

请求动态文件测试

nginx反向代理配置详解(nginx反向代理解决方案)(2)

动态文件请求已经成功转发至172.20.10.9.

测试成功!

7.补充

补充一

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}3

补充二

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}4

补充三

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}5

3.nginx实现负载均衡

1.几个概念

调度器:分发用户的请求到一个后端节点

上游服务器(真实服务器):每个真正用来处理用户请求的节点都是一个上游服务器

CIP:客户端的IP地址

RIP:真实服务器的IP地址

VIP:虚拟IP,用户所看到的是也是虚拟IP

2.指令

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}6

3.重要参数

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}7

4.nginx实现负载均衡实战案例

1.环境准备

centos7.5

nginx服务器IP:172.20.10.7/28

web1服务器端IP:172.20.10.8/28

web2服务器端IP:172.20.10.9/28

2.配置nginx服务器端

安装nginx略

配置nginx文件

location/{proxy_passhttp://10.220.5.180;proxy_set_headerX-Real-IP$remote_addrproxy_set_headerHost$proxy_host;}8

语法检测

[root@ken~]#nginx-tnginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisoknginx:configurationfile/etc/nginx/nginx.conftestissuccessful

重启nginx

[ken]name=kenenabled=1gpgcheck=0baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/0

3.配置web服务器端

略.和上面反向代理配置一样。

4.浏览器测试

输入nginx服务器端的IP地址

nginx反向代理配置详解(nginx反向代理解决方案)(3)

因为172.20.10.9的权重为2,即出现两次172.20.10.9才会出现一次172.20.10.8.进行刷新测试

nginx反向代理配置详解(nginx反向代理解决方案)(4)

测试成功!

nginx的三大功能,缓存,反向代理,负载均衡,已经全部讲解完毕,是否对nginx有了全新的认识那?马上自己动手实验一下吧

发表评论:

最近发表
网站分类
标签列表