Nginx反向代理+负载均衡简单实现(http方式)

1)nginx的反向代理:proxy_pass
2)nginx的负载均衡:upstream

下面是nginx的反向代理和负载均衡的实例:

负载机:A机器:103.110.186.8/192.168.1.8
后端机器1:B机器:192.168.1.102
后端机器2:C机器:192.168.1.103

需求:
1)访问A机器的8080端口,反向代理到B机器的8080端口;
访问A机器的8088端口,反向代理到C机器的8088端口;
访问:8090/ios,反向代理到B机器:8090/ios/

2)访问A机器的80端口,负载均衡到后端的两台机器B和C的80端口

操作记录:
--------------------------------------------------------------------------------------
负载机:A机器上的操作记录:
1)编译安装nginx
[root@opd ~]# yum install -y pcre* openssl* gcc gcc+
[root@opd ~]# cd /opt/src
[root@src ~]# wget
[root@src ~]# tar -zxvf nginx-1.8.0.tar.gz
[root@src ~]# cd nginx-1.8.0
#添加www用户,其中-M参数表示不添加用户家目录,-s参数表示指定shell类型

[root@nginx-1.8.0 ~]#useradd www -M -s /sbin/nologin
[root@nginx-1.8.0 ~]#vim auto/cc/gcc
#将这句注释掉 取消Debug编译模式 大概在179行
#CFLAGS="$CFLAGS -g"

#我们再配置下nginx编译参数
[root@nginx-1.8.0 ~]# ./configure --prefix=/opt/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
[root@nginx-1.8.0 ~]#make
[root@nginx-1.8.0 ~]#make install clean

2)配置nginx
[root@nginx-1.8.0 ~]# cd /opt/nginx/conf
[root@nginx-1.8.0 conf]# vim nginx.conf         //这个可以作为nginx安装后的配置规范

http {
    include      mime.types;
    default_type  application/octet-stream;
    charset utf-8;
 
    log_format  main  '$http_x_forwarded_for $remote_addr $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_cookie" $host $request_time';
    sendfile      on;
    tcp_nopush    on;
    tcp_nodelay    on;
    keepalive_timeout  65;
 
 
    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    fastcgi_buffer_size 256k;
    fastcgi_buffers 8 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
 
     
    client_header_timeout 600s;
    client_body_timeout 600s;
 
    client_max_body_size 100m;           
    client_body_buffer_size 256k;         
 
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types      text/plain application/x-Javascript text/css application/xml text/javascript application/x-httpd-php;
    gzip_vary on;
 
 
    include vhosts/*.conf;
}

[root@nginx-1.8.0 conf]# ulimit -n 65535
[root@nginx-1.8.0 conf]# mkdir vhosts
[root@nginx-1.8.0 conf]# cd vhosts

配置反向代理和负载均衡
[root@nginx-1.8.0 vhosts]# vim 8080.conf

server {

    listen 8080;

    server_name localhost;

    index index.html index.php index.htm;

    root /var/www/html;

  

    access_log  /usr/local/nginx/logs/8080-access.log main;

    error_log  /usr/local/nginx/logs/8080-error.log;

 

location / {

    proxy_pass http://192.168.1.102:8080;

    proxy_redirect off ;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header REMOTE-HOST $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_connect_timeout 300;            #跟后端服务器连接超时时间,发起握手等候响应时间

    proxy_send_timeout 300;                #后端服务器回传时间,就是在规定时间内后端服务器必须传完所有数据

    proxy_read_timeout 600;                #连接成功后等待后端服务器的响应时间,已经进入后端的排队之中等候处理

    proxy_buffer_size 256k;                #代理请求缓冲区,会保存用户的头信息以供nginx进行处理

    proxy_buffers 4 256k;                  #同上,告诉nginx保存单个用几个buffer最大用多少空间

    proxy_busy_buffers_size 256k;          #如果系统很忙时候可以申请最大的proxy_buffers

    proxy_temp_file_write_size 256k;      #proxy缓存临时文件的大小

    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

    proxy_max_temp_file_size 128m;

}

}

[root@nginx-1.8.0 vhosts]# cat 8088.conf

server {

    listen 8088;

    server_name localhost;

    index index.html index.php index.htm;

    root /var/www/html;

  

    access_log  /usr/local/nginx/logs/8088-access.log main;

    error_log  /usr/local/nginx/logs/8088-error.log;

 

location / {

    proxy_pass http://192.168.1.103:8088;

    proxy_redirect off ;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header REMOTE-HOST $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_connect_timeout 300;           

    proxy_send_timeout 300;             

    proxy_read_timeout 600;             

    proxy_buffer_size 256k;               

    proxy_buffers 4 256k;                 

    proxy_busy_buffers_size 256k;       

    proxy_temp_file_write_size 256k;     

    proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

    proxy_max_temp_file_size 128m;

}

}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0a4f128b0e00dfe1bf234a6f7b7e3dcc.html