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
}
}
}
负载均衡:
upstream是用来做负载均衡的 tmssi_in是相当于负载均衡后的访问地址,weight是设置负载权重。这里总共设置了3台转发机器,相当于访问9次158.220.140.203的操作,有3次是转发到158.220.140.205的,3次是转发204的,3次是转发203的。根据各个服务器具体性能来设置,一般情况下平均分配就可以。
上面配置是表示对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。一般用于浏览器访问跨域的问题。