nginx基于tcp负载均衡的配置方法

发布时间:2020-04-12编辑:脚本学堂
本文介绍了nginx中使用基于tcp的方式配置负载均衡的方法,nginx负载均衡配置的简单例子,需要的朋友参考下。

本节内容:
nginx基于tcp做负载均衡
 
nginx基于tcp反向代理
1.安装环境
系统环境:centos6.3_x64
软件版本:nginx-1.4.2.tar.gz  nginx_tcp_proxy_module-master.zip

2.软件安装
 

cd /root/
wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.12/pcre-8.12.tar.gz
tar zxvf pcre-8.12.tar.gz
cd pcre-8.12/
./configure
make && make install
 
cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz
 
cd /root/
wget http://nginx.org/download/nginx-1.4.2.tar.gz
groupadd www
useradd -g www www
tar zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2/
 # 到 https://github.com/yaoweibin/nginx_tcp_proxy_module 这个地址下载nginx_tcp_proxy_module模块
unzip nginx_tcp_proxy_module-master.zip
patch -p1 < /root/nginx-1.4.2/nginx_tcp_proxy_module-master/tcp.patch
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.0.1c --add-module=/root/nginx-1.4.2/nginx_tcp_proxy_module-master
make && make install

3.nginx配置
 

# cat /usr/local/nginx/conf/nginx.conf
user  www;
worker_processes  8;   #等同于CPU核数
 
error_log  logs/error.log;
 
pidlogs/nginx.pid;
 
 
events {
    use epoll;
    worker_connections  51200;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfileon;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 16k;
    client_max_body_size 50m;
    client_body_buffer_size 256k;
    proxy_connect_timeout 600;
    proxy_read_timeout 600;
    proxy_send_timeout 600;
    proxy_buffer_size 64k;
    proxy_buffers   4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
 
    gzip  on;
}
 
tcp {
 
#### dhserver ####
 upstream dh {
  server 192.168.5.83:26888;
  server 192.168.5.84:26888;
  check interval=3000 rise=2 fall=5 timeout=1000;
 }
 
 server {
  listen 26888;
  proxy_pass dh;
 }
 
####  mainserver ####
upstream main {
 server 192.168.5.85:8088;
 server 192.168.5.86:8088;
  check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
    listen 8088;
     proxy_pass main;
}
 
#### files ####
upstream files1 {
server 192.168.5.93:30001;
server 192.168.5.94:30001;
check interval=3000 rise=2 fall=5 timeout=1000;
}
 
server {
listen 30001;
proxy_pass files1;
}
 
upstream files2 {
server 192.168.5.93:30002;
server 192.168.5.94:30002;
check interval=3000 rise=2 fall=5 timeout=1000;
}
 
server {
listen 30002;
proxy_pass files2;
}
}
 

说明,tcp流量负载是无法让后端的RealServer获取到用户的真实IP的,只能通过nginx的log文件来判断。