用Nginx为多个http/socks代理做负载均衡(反向代理)
近日遇到一个需求,某机器上在四个端口上开了四个http代理,因为每个代理都有流量限额,所以要平均着使用,但由使用者手动更改端口号又太麻烦,所以需要将这4个端口融合为1个,想到的办法就是用Nginx做负载均衡。
Nginx负载均衡的文章教程有很多了,但多数使用背景都是网站服务器分流,方法基本是对nginx.conf的http{ 下添加upstream xxxx等等,经实验证明是不管用的,需要nginx的stream模块才可以。下面进行介绍。
nginx.conf的错误配置
http { ........ upstream local-proxy {
server 127.0.0.1:8119; #union-proxy
server 127.0.0.1:8120; #union-proxy
server 127.0.0.1:8121; #union-proxy
server 127.0.0.1:8122; #union-proxy
ip_hash;
} server {
listen 8118;
server_name http-proxy; location / {
proxy_pass http://local-proxy;
}
...... }
虽然感觉http代理应该写在http模块里,但事实证明是是不行的。而改用stream模块后,不光http代理可以,sock5代理也行。
nginx.conf正确配置
stream { ...... upstream local-proxy {
server 127.0.0.1:8119; #union-proxy
server 127.0.0.1:8120; #union-proxy
server 127.0.0.1:8121; #union-proxy
server 127.0.0.1:8122; #union-proxy
#ip_hash在stream中是不支持的
} server {
listen 8118;
#server_name也没有;
proxy_pass local-proxy; }
......
}
之后重载配置或重启nginx,用curl测试:
curl -x 127.0.0.1:8118 http://icanhazip.com
发现出口IP已经变了,多次请求发现IP不一致,负载均衡成功。
有关stream模块详情还可参见 https://www.zybuluo.com/orangleliu/note/478334 有更详细的配置方法。
另,nginx -t -c /etc/nginx/nginx.conf 命令可方便地检查配置文件是否有问题。
本文的需求如果不想用Nginx,Haproxy也可以做到,可参见 https://zhuanlan.zhihu.com/p/30559435
用Nginx为多个http/socks代理做负载均衡(反向代理)的更多相关文章
- nginx做为web容器部署静态资源以及做负载均衡反向代理实现
需求: 此时前台开发完成打包生成静态资源文件,要做到以下方面: 使用nginx部署静态资源,同时nginx要实现端口转发,隐藏真实后台地址,同时后台需要做一个负载均衡. localhost:7001 ...
- Nginx服务器部署 负载均衡 反向代理
Nginx服务器部署负载均衡反向代理 LVS Nginx HAProxy的优缺点 三种负载均衡器的优缺点说明如下: LVS的优点: 1.抗负载能力强.工作在第4层仅作分发之用,没有流量的产生,这个特点 ...
- Nginx HTTP负载均衡/反向代理的相关参数测试
原文地址:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1984976.html 测试目的 (1)弄清楚HTTP Upstr ...
- nginx 负载均衡 反向代理
nginx 通过方向代理实现负载均衡,负载均衡是大流量网站要做的措施,单从字面上的意思来理解为N台服务器平均分担负载,不会因为某一台服务器负载高宕机而影响用户访问网站,负载均衡至少需要三台服务器, 既 ...
- nginx反向代理做负载均衡以及使用redis实现session共享配置详解
1.为什么要用nginx做负载均衡? 首先我们要知道用单机tomcat做的网站,比较理想的状态下能够承受的并发访问在150到200, 按照并发访问量占总用户数的5%到10%技术,单点tomcat的用户 ...
- Nginx负载均衡反向代理 后端Nginx获取客户端真实IP
Nginx 反向代理后,后端Nginx服务器无法正常获取客户端的真实IP nginx通过http_realip_module模块来实现的这需要重新编译,如果提前编译好了就无需重新编译了1,重新编译ng ...
- 架构之Nginx(负载均衡/反向代理)
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 . Nginx 是由 Igor Sys ...
- nginx负载均衡(反向代理)
6,安装nginx 6.1 依赖库安装 要安装在root根目录里,不要装在虚拟环境里面 yum install gcc-c++ pcre pcre-devel zlib zlib-devel ope ...
- nginx域名转发 负载均衡 反向代理
公司有三台机器在机房,因为IP不够用,肯定要分出来,所以要建立单IP 多域名的反向代理, 就是当请求www.abc.com 跳转到本机, 请求www.bbc.com 跳转到192.168.0.35 机 ...
随机推荐
- Scrapy框架——使用CrawlSpider爬取数据
引言 本篇介绍Crawlspider,相比于Spider,Crawlspider更适用于批量爬取网页 Crawlspider Crawlspider适用于对网站爬取批量网页,相对比Spider类,Cr ...
- mysql innodb阻塞分析
http://blog.csdn.net/hw_libo/article/details/39080809
- HADOOP依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- C语言递归之求根到叶节点数字之和
题目描述 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到叶子节点 ...
- Pytorch构建ResNet
学了几天Pytorch,大致明白代码在干什么了,贴一下.. import torch from torch.utils.data import DataLoader from torchvision ...
- 【转】redis数据库入门教程(全面详细)+面试问题
[本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis ...
- Luogu P2495 [SDOI2011]消耗战
题目 我们可以很快的想到一个单次\(O(n)\)的dp. 然后我们注意到这个dp有很多无用的操作,比如一条没有关键点的链可以直接去掉. 所以我们可以尝试一次dp中只管那些有用的点. 题目给的关键点显然 ...
- C - 简易贪吃蛇的编写
不多废话,直接进入正题——用C编写简易贪吃蛇.附上拙劣的源码 * c-snake * 首先说明使画面动起来的原理:通过 system("cls"); 清除当前控制台的显示,再pri ...
- MySql 中锁的定义
行级锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select.行级锁之前需要先加表结构共享锁. 表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作都不限制 ...
- Win32汇编-编写PE结构解析工具
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...