1.反向代理概述

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

环境准备:

主机名 IP地址 角色 系统
web-node1.com eth0:192.168.90.201 web-node1节点 CentOS7.2
web-node2.com eth0:192.168.90.202 web-node2节点 CentOS7.2
lb-node1.com eth0:192.168.90.203 Nginx反向代理 CentOS7.2
 

2.Node节点部署

在两台web-node节点中均使用Yum安装一个Apache用于做真实机,监听8080端口

web-node1.com部署

[root@web-node1 ~]# rpm -ivh \
http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@web-node1 ~]# yum install -y gcc glibc gcc-c++ make screen tree lrzsz
##部署web-node1 httpd服务
[root@web-node1 ~]# yum install -y httpd
[root@web-node1 ~]# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
[root@web-node1 ~]# systemctl start httpd
[root@web-node1 ~]# echo "web-node1.com" > /var/www/html/index.html
[root@web-node1 ~]# curl http://192.168.90.201:8080/
web-node1.com

web-node2.com部署

[root@web-node1 ~]# rpm -ivh \
http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@web-node1 ~]# yum install -y gcc glibc gcc-c++ make screen tree lrzsz
##部署web-node2 httpd服务
[root@web-node2 ~]# yum install -y httpd
[root@web-node2 ~]# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
[root@web-node2 ~]# systemctl start httpd
[root@web-node2 ~]# echo "web-node2.com" > /var/www/html/index.html
[root@web-node2 ~]# curl http://192.168.90.202:8080/
web-node2.com

3.反向代理部署

Nginx 源码编译安装,使其支持4层,并监听80端口

[root@lb-node1 ~]# useradd -s /sbin/nologin -M www
[root@lb-node1 ~]# cd /usr/local/src/
[root@lb-node1 src]# wget http://nginx.org/download/nginx-1.15.8.tar.gz
[root@lb-node1 src]# tar xf nginx-1.15..tar.gz
[root@lb-node1 src]# cd nginx-1.15.
[root@lb-node1 nginx-1.10.]# ./configure --prefix=/usr/local/nginx-1.15. \
--user=www --group=www --with-http_ssl_module \
--with-http_stub_status_module --with-http_sub_module --with-file-aio --with-stream
[root@lb-node1 nginx-1.10.]# make && make install
[root@web-node1 ~]# ln -s /usr/local/nginx-1.15./ /usr/local/nginx
## 测试配置并启动Nginx
[root@lb-node1 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.15./conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.15./conf/nginx.conf test is successful
[root@lb-node1 ~]# /usr/local/nginx/sbin/nginx

3.1配置Nginx7层反向代理

1.配置Nginx反向代理

##http段配置
upstream web-cluster {
# ip_hash; #会话保持,如果有登录认证的网站需要开启
server 192.168.90.201: weight= max_fails= fail_timeout=;
server 192.168.90.202: weight= max_fails= fail_timeout=;
}
server {
listen ;
server_name 192.168.90.203;
location / {
proxy_pass http://web-cluster;
include proxy.conf;
}
}

测试代理

[root@lb-node1 ~]# curl http://192.168.90.203/
web-node1.com
[root@lb-node1 ~]# curl http://192.168.90.203/
web-node2.com
[root@lb-node1 ~]# curl http://192.168.90.203/
web-node1.com
[root@lb-node1 ~]# curl http://192.168.90.203/
web-node2.com

2.通过分组方式,以及User-agent实现不同代理

#http段配置
upstream static-cluster {
server 192.168.90.201: weight= max_fails= fail_timeout=;
}
upstream dynamic-cluster {
server 192.168.90.202: weight= max_fails= fail_timeout=;
}
upstream default-cluster {
server 192.168.90.202: weight= max_fails= fail_timeout=;
}
#需要配置本地host解析测试
server {
listen ;
server_name nginx.domain.com;
location / {
if ($http_user_agent ~* "Firefox"){
proxy_pass http://static-cluster;
}
if ($http_user_agent ~* "Chrome") {
proxy_pass http://dynamic-cluster;
}
proxy_pass http://default-cluster;
}
}

测试分组

##默认浏览器交给default处理
[root@lb-node1 ~]# curl http://nginx.domain.com
web-node2.com

火狐浏览器交给static-cluster处理

谷歌浏览器交给dynamic-cluster处理

 

3.2配置Nginx4层反向代理

配置ssh以及msql反向代理

stream {
upstream ssh_proxy {
hash $remote_addr consistent;
server 192.168.90.201:;
}
upstream mysql_proxy {
hash $remote_addr consistent;
server 192.168.90.202:;
}
server {
listen ;
proxy_connect_timeout 1s;
proxy_timeout 300s;
proxy_pass ssh_proxy;
}
server {
listen ;
proxy_connect_timeout 1s;
proxy_timeout 300s;
proxy_pass mysql_proxy;
}
}

2222端口代理至于node1的SSH、3333端口代理至于node2的MYSQL

## 测试连接ssh
[root@lb-node1 ~]# ssh -p2222 root@192.168.90.203
root@192.168.90.203's password:
Last login: Wed Oct :: from 192.168.80.143
[root@web-node1 ~]#
## 测试连接mysql
[root@lb-node1 ~]# mysql -h192.168.90. -uroot -p1 -P3333
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server
Copyright (c) , , Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

Nginx反向代理负载均衡配置的更多相关文章

  1. Centos7.4 Nginx反向代理+负载均衡配置

    Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...

  2. Linux 下 Nginx 反向代理 负载均衡配置

    转载请注明出处:http://blog.csdn.net/smartbetter/article/details/52036350 上一篇分享了 Nginx + JDK + Tomcat + MySQ ...

  3. Nginx 反向代理 负载均衡 虚拟主机配置

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  4. 【转】Nginx 反向代理 负载均衡 虚拟主机配置

    原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...

  5. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  6. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

  7. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  8. Centos 7配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  9. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

随机推荐

  1. Odoo中的甘特图

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9296922.html  甘特图 用图表来衡量实际与预期生产记录之间关系的方法中所使用的图表,亦称甘特进度表或条 ...

  2. VMware虚拟机安装Mac OS X

    安装mac系统学习网站来源:http://blog.csdn.net/hamber_bao/article/details/51335834 1.下载安装VMware workstation (1)首 ...

  3. 怎么在移动端模拟pc端进行web开发调试日志

    由于移动端开发,许多地方需要进行手势交互开发,而在pc模拟手机浏览器中不能进行模拟手势,所以无法查看日志,于是网上找了一个,腾讯vConsole,感觉还可以,分享给大家安装也方便 我的项目是基于vue ...

  4. Linux服务器之间免密同步文件、重启R服务

    机器:ML-01/ML-02/ML-03 需求: 1.在ML-01上自动将文件同步至ML-02/ML-03 2.在ML-01上通过脚本重启ML-02/ML-03上的R服务 说明:以下示例中,ML-02 ...

  5. 封装一个统一返回json结果类JsonResult

    import java.io.Serializable; public class JsonResult implements Serializable{ private static final l ...

  6. HashTable、HashSet和Dictionary的区别(转载)

    1.HashTable哈希表(HashTable)表示键/值对的集合.在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类 ...

  7. SpringCloud 学习(一) :Features

    话不多说,现在在开发微服务项目,也想系统的学习一下SpringCloud,顾选择硬着头皮跟着英文官方文档学习一遍SpringCloud. 现在公司在用SpringCloud,也有很好的实践应用,加上更 ...

  8. DQL-联合查询

    一.含义union:合并.联合,将多次查询结果合并成一个结果二.语法查询语句1union [all]查询语句2union [all]... 三.意义1.将一条比较复杂的查询语句拆分成多条语句2.适用于 ...

  9. python通过cx_oracle操作数据库过程简单记录

    1.环境配置 环境配置过程中,需要关注软件版本是否一致,主要包括:oracle客户端版本.cx_oracle版本.python版本: 2.操作记录 (1)验证环境是否正常:(无报错即为正常) impo ...

  10. mysql 系统用户最大文件打开数限制

    纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程. 上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意.于是 ...