Home  >  Article  >  Backend Development  >  Nginx configuration implements reverse proxy and load balancing based on tcp protocol

Nginx configuration implements reverse proxy and load balancing based on tcp protocol

WBOY
WBOYOriginal
2016-08-08 09:24:191430browse

1. Installation environment

System environment: centos6.3_x64

Software version: nginx-1.4.2.tar.gz nginx_tcp_proxy_module-master.zip

2. Software installationcd /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/
# Go to https://github.com/yaoweibin/nginx_tcp_proxy_module to download nginx_tcp_proxy_module 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 configuration

 # cat /usr/local/nginx/conf/nginx.conf
user  www;
worker_processes  8;   #等同于CPU核数
error_log  logs/error.log;
pid        logs/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;
    sendfile        on;
    #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;
        }
                                                                                                                                 ; server {
        Listen 30002;
PS: I have done a lot of NGINX proxy tests before and forwarded port-based services, but they all ended in failure. This is the only method you can try.

In addition, servers that have NGINX installed may need to uninstall and reinstall, because the patching stage is done in the installation package. At least so far, I have not found a way to patch the installed nginx service. The README only introduces patching under the installation package.
The above introduces the Nginx configuration to implement reverse proxy and load balancing based on the TCP protocol, including the relevant aspects. I hope it will be helpful to friends who are interested in PHP tutorials.
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn