nginx反向代理:

方案

  使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址分别为192.168.4.5和192.168.2.5,两台Web服务器IP地址分别为192.168.2.100和192.168.2.200。客户端测试主机IP地址为192.168.4.100。如图所示。

web1和web2简单的安装httpd开启服务作为后端的Web服务器,两台机需要关闭防火墙(httpd安装过程略)

nginx服务器修改配置文件,添加服务器池,实现反向代理(nginx安装过程略)

1)修改/usr/local/nginx/conf/nginx.conf配置文件

1)修改/usr/local/nginx/conf/nginx.conf配置文件

  1. [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
  2. .. ..
  3. http {
  4. .. ..
  5. #使用upstream定义后端服务器集群,集群名称任意(如webserver)
  6. #使用server定义集群中的具体服务器和端口
  7. upstream webserver {
  8. server 192.168.2.100:80;  #web1服务器地址
  9. server 192.168.2.200:80;  #web2服务器地址
  10. }
  11. .. ..
  12. server {
  13. listen        80;
  14. server_name localhost;
  15. location / {
  16. #通过proxy_pass将用户的请求转发给webserver集群
  17. proxy_pass http://webserver;
  18. }
  19. }

重启nginx,client(192.168.4.100)访问nginx代理服务器(192.168.4.5)地址,代理转到后端web服务器(192.168.2.100/192.168.2.200)

[root@client ~]# curl http://192.168.4.5

服务器集群池属性设置

weight可以设置后台服务器的权重,max_fails可以设置后台服务器的失败次数,fail_timeout可以设置后台服务器的失败超时时间。

upstream webserver {

  server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30;  #weight设置服务器权重值,默认值为1#max_fails设置最大失败次数

  server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30;  #fail_timeout设置失败超时时间,单位为秒

  server 192.168.2.101 down;  #down标记服务器已关机,不参与集群调度

}

nginx TCP/UDP调度器

1、部署nginx服务器

编译安装必须要使用--with-stream参数开启4层代理模块。

  1. [root@proxy ~]# yum –y install gcc pcre-devel openssl-devel        //安装依赖包
  2. [root@proxy ~]# tar -xf nginx-1.12.2.tar.gz
  3. [root@proxy ~]# cd nginx-1.12.2
  4. [root@proxy nginx-1.12.2]# ./configure \
  5. > --with-http_ssl_module                         //开启SSL加密功能
  6. > --with-stream                                 //开启4层反向代理功能
  7. [root@proxy nginx-1.12.2]# make && make install     //编译并安装

2、配置Nginx服务器,添加服务器地址池,实现TCP/UDP反向代理功能

1)修改/usr/local/nginx/conf/nginx.conf配置文件

  1. [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
  2. stream {
  3. upstream backend {
  4. server 192.168.2.100:22;            //后端SSH服务器的IP和端口
  5. server 192.168.2.200:22;
  6. }
  7. server {
  8. listen 12345;                    //Nginx监听的端口
  9. proxy_connect_timeout 1s;
  10. proxy_timeout 3s;
  11. proxy_pass backend;
  12. }
  13. }
  14. http {
  15. .. ..
  16. }

最新文章

  1. Go 语言的基本数据类型
  2. UItextView回收键盘的几种方式
  3. JVM学习笔记:Java运行时数据区域
  4. Orchard源码分析(7.1):Routing(路由)相关
  5. Android 开源项目
  6. js-事件、正则表达式
  7. 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中
  8. 冒泡排序与插入排序(C#实现)
  9. Java虚拟机学习 - 体系结构 内存模型
  10. 【转】【JavaScript】禁用backspace键的后退功能,但是可以删除文本内容
  11. 使用python求字符串或文件的MD5
  12. C++友元函数重载"++"和"--"运算符
  13. iOS开发CoreAnimation解读之二——对CALayer的分析
  14. Unity GUI选择与评价
  15. css兼容性问题的整理
  16. redhat7.3配置163 yum源
  17. 了解mysqlpump工具
  18. html 提取 公用部分
  19. 斯坦福大学公开课机器学习:梯度下降运算的特征缩放(gradient descent in practice 1:feature scaling)
  20. Java、Linux、Win 快速生成指定大小的空文件

热门文章

  1. Java生成压缩文件(zip、rar 格式)
  2. Java多线程断点下载文件
  3. 使用laravel-wechat微信支付
  4. prevAll([expr]) 查找当前元素之前所有的同辈元素
  5. Depth from Videos in the Wild 解读
  6. Java源码分析-UUID
  7. tensorboard 远程服务器本地浏览器无法显示
  8. [vim]多行注释和多行删除
  9. Wox使用指南
  10. Hadoop配置多个HDFS入口