Nginx反向代理配置
2020-02-25 17:59
120 查看
Nginx反向代理
**概念:**反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
**案例:**使用Nginx实现Web反向代理功能,实现如下功能:
后端Web服务器两台,可以使用httpd实现
Nginx采用轮询的方式调用后端Web服务器
两台Web服务器的权重要求设置为不同的值
最大失败次数为1,失败超时时间为30秒
需要准备:4台RHEL7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址分别为192.168.4.5和192.168.2.5,两台Web服务器IP地址分别为192.168.4.100和192.168.4.200。客户端测试主机IP地址为192.168.4.10
Ngin目前支持的调度算法:
-轮询(默认的):逐一循环调度
-weight:指定轮询几率,权重值和访问比率成正比
-ip_hash:根据客户端ip分配固定的后端服务器
服务器组主机状态:
-down:表示当前server暂时不参与负载
-max_fails:允许请求失败的次数(默认为1)
-fail_timeout:max_fails次失败后,暂停提供服务的时间
**步骤一:部署实施后端Web服务器
1)部署后端Web1服务器** 后端Web服务器可以简单使用yum方式安装httpd实现Web服务,为了可以看出后端服务器的不同,可以将两台后端服务器的首页文档内容设置为不同的内容。 [root@web1 ~]# yum -y install httpd [root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html [root@web1 ~]# systemctl restart httpd **2)部署后端Web2服务器** [root@web2 ~]# yum -y install httpd [root@web2 ~]# echo "192.168.4.200" > /var/www/html/index.html [root@web2 ~]# systemctl restart httpd
**步骤二:配置Nginx服务器,添加服务器池,实现反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件** [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. http { .. .. #使用upstream定义后端服务器集群,集群名称任意(如webserver) #使用server定义集群中的具体服务器和端口 upstream webserver { server 192.168.4.100:80; server 192.168.4.200:80; } .. .. server { listen 80; server_name localhost; location / { #通过proxy_pass将用户的请求转发给webserver集群 proxy_pass http://webserver; } } **2)重新加载配置** [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload **3)客户端使用浏览器访问代理服务器测试轮询效果** [root@client ~]# curl http://192.168.4.5 #使用该命令多次访问查看效果 [root@client ~]# curl http://192.168.4.5 #使用该命令多次访问查看效果
**步骤三:配置upstream服务器集群池属性
1)设置失败次数,超时时间,权重** weight可以设置后台服务器的权重,max_fails可以设置后台服务器的失败次数,fail_timeout可以设置后台服务器的失败超时时间。 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. http { .. .. upstream webserver { server 192.168.4.100 weight=1 max_fails=1 fail_timeout=30; server 192.168.4.200 weight=2 max_fails=2 fail_timeout=30; server 192.168.4.101 down; } #weight设置服务器权重值,默认值为1 #max_fails设置最大失败次数,测试服务器几次才确认服务器失败 #fail_timeout设置失败超时时间,单位为秒 #down标记服务器已关机,不参与集群调度 .. .. server { listen 80; server_name localhost; location / { proxy_pass http://webserver; } } 2)重新加载配置 [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 3)关闭一台后端服务器(如web1) [root@web1 ~]# systemctl stop httpd 4)客户端使用浏览器访问代理服务器测试轮询效果 [root@client ~]# curl http://192.168.4.5 #使用该命令多次访问查看效果 5)再次启动后端服务器的httpd(如web1) [root@web1 ~]# systemctl start httpd 6)客户端再次使用浏览器访问代理服务器测试轮询效果 [root@client ~]# curl http://192.168.4.5 #使用该命令多次访问查看效果
步骤四:配置upstream服务器集群的调度算法
1)设置相同客户端访问相同Web服务器 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. http { .. .. upstream webserver { #通过ip_hash设置调度规则为:相同客户端访问相同服务器 ip_hash; server 192.168.4.100 weight=1 max_fails=2 fail_timeout=10; server 192.168.4.200 weight=2 max_fails=2 fail_timeout=10; } .. .. server { listen 80; server_name www.tarena.com; location / { proxy_pass http://webserver; } } 2)重新加载配置 [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 3)客户端使用浏览器访问代理服务器测试轮询效果 [root@client ~]# curl http://192.168.4.5 #使用该命令多次访问查看效果 **Nginx的TCP/UDP调度器** 案例: 使用Nginx实现TCP/UDP调度器功能,实现如下功能: 后端SSH服务器两台 Nginx编译安装时需要使用--with-stream,开启ngx_stream_core_module模块 Nginx采用轮询的方式调用后端SSH服务器 需要使用的模块: ngx_stream_core_module模块 步骤一:部署支持4层TCP/UDP代理的Nginx服务器 1)部署nginx服务器 编译安装必须要使用--with-stream参数开启4层代理模块。 [root@proxy ~]# cd nginx-1.12.2 [root@proxy nginx-1.12.2]# ./configure \ --with-http_ssl_module \ #开启SSL加密功能 --with-stream #开启4层反向代理功能 [root@proxy nginx-1.12.2]# make && make install #编译并安装
步骤二:配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf stream { upstream backend { server 192.168.4.100:22; #后端SSH服务器的IP和端口 server 192.168.4.200:22; } server { listen 12345; #Nginx监听的端口 proxy_pass backend; } } http { .. .. } 2)重新加载配置 [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 3)客户端使用访问代理服务器测试轮询效果 [root@client ~]# ssh 192.168.4.5 -p 12345 #使用该命令多次访问查看效果
相关文章推荐
- nginx反向代理原理和配置
- Nginx反向代理与负载均衡:节点服务器单/多虚拟机配置+实验环境搭建+原理解析 推荐
- nginx反向代理和负载均衡配置
- 基于CentOS 7配置Nginx反向代理
- Nginx反向代理以及负载均衡配置
- nginx反向代理原理和配置讲解
- FreeBSD安装配置Nginx反向代理和负载均衡
- 使用SSL配置Nginx反向代理的简单指南
- nginx反向代理配置去除前缀
- nginx反向代理配置及优化
- nginx反向代理配置及优化
- Nginx反向代理配置
- Nginx反向代理以及负载均衡配置
- mac环境下配置nginx反向代理,https协议
- nginx反向代理的简单配置
- Nginx反向代理的简单配置
- nginx反向代理配置去除前缀—教程
- 配置Nginx反向代理WebSocket,以代理noVNC为例
- nginx反向代理配置及优化
- Linux服务-配置Nginx反向代理