Nginx处理负载均衡及HTTP代理

Nginx的安装部署:

Nginx是一个高性能的HTTP和反向代理服务器,由俄罗斯人开发的,第一个版本发布于2004年10月4日。Nginx由于出色的性能,在世界范围内受到了越来越多人的关注,其特点是占有内存少,并发能力强,nginx的并发能力确实在同类型的网页服务器中是很强的,国内BAT、163、新浪等等都在使用nginx进行服务发布和管理。Nginx还对负载均衡等提供了非常方便的配置,同时Nginx众多的插件和功能集成更是让Nginx成为某些WEB应用场景的不二选择。

安装nginx之前我们先要准备好系统环境和相关库,这里需要gcc编译环境、PRCE库、zlib库和openssl,我们可以使用yum命令来安装这些依赖库。

yum -y install gcc

yum -y install pcre-devel

yum -y install zlib

yum -y install openssl openssl-devel

我们从官网下载稳定版本的nginx,http://nginx.org/,当前的稳定版本是nginx-1.12.2,我们下载nginx-1.12.2.tar.gz,并上传到linux服务器上面。

然后解压nginx源码包

tar -xvzf nginx-1.12.2.tar.gz

解压后进入nginx目录,

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

–prefix指定安装目录/usr/local/nginx,–with-http_stub_status_module:支持nginx状态查询, 

–with-http_ssl_module:支持https,–with-XXX表示启用某个功能模块,–without-XXX则表示禁用某个功能模块。

然后编译安装

make

make install

完成安装后进入nginx安装的sbin目录,一般情况默认安装是/usr/local/nginx/sbin目录,使用cd /usr/local/nginx/sbin进去,之后启动nginx

[[email protected] sbin]# ./nginx

使用浏览器访问对应的IP 

看到初始页面就说明安装成功了。

以下几条命令是常用的 

停止nginx

./nginx -s stop

重启nginx

./nginx -s reopen

检查nginx.conf配置文件的正确性

./nginx -t

重新载入配置文件

./nginx -s reload

Nginx配置文件说明:

########### 每个指令必须有分号结束。#################

#user administrator administrators;  #配置用户或者组,默认为nobody nobody。

#worker_processes 2;  #允许生成的进程数,默认为1

#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址

error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

events {

    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on

    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off

    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections  1024;    #最大连接数,默认为512

}

http {

    include       mime.types;   #文件扩展名与文件类型映射表

    default_type  application/octet-stream; #默认文件类型,默认为text/plain

    #access_log off; #取消服务日志    

    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式

    access_log log/access.log myFormat;  #combined为日志格式的默认值

    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

 

    upstream mysvr {   

      server 127.0.0.1:7878;

      server 192.168.10.121:3333 backup;  #热备

    }

    error_page 404 https://www.baidu.com; #错误页

    server {

        keepalive_requests 120; #单连接请求上限次数。

        listen       4545;   #监听端口

        server_name  127.0.0.1;   #监听地址       

        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。

           #root path;  #根目录

           #index vv.txt;  #设置默认页

           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表

           deny 127.0.0.1;  #拒绝的ip

           allow 172.18.5.54; #允许的ip           

        }

    }

}

负载均衡:

Nginx处理负载均衡及HTTP代理

 

 upstream是用来做负载均衡的 tmssi_in是相当于负载均衡后的访问地址,weight是设置负载权重。这里总共设置了3台转发机器,相当于访问9次158.220.140.203的操作,有3次是转发到158.220.140.205的,3次是转发204的,3次是转发203的。根据各个服务器具体性能来设置,一般情况下平均分配就可以。

Nginx处理负载均衡及HTTP代理

上面配置是表示对158.220.140.203访问时的9001端口进行的监听配置,location后面的是访问路径,上面表示的完整访问路径为 158.220.140.203:9001/,其访问到的地址为proxy_pass里配置的当前访问路径配置,对应的为upstream后的配置名 tmssi_out。

Http代理:

也可以直接在proxy_pass里配置所需要转发的地址,如158.220.140.203:9001/test对应的访问路径地址为http://158.223.10.132:9099/yhnp。一般用于浏览器访问跨域的问题。