nginx 是用c语言写的,官网下载的是源码,所以需要gcc编译器
yum install gcc-c++
nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库
yum install -y pcre pcre-devel
nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库
yum install -y zlib zlib-devel
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库
yum install -y openssl openssl-devel
官网下载nginx,分稳定版(stable)和主流版(Mainline)
http://nginx.org/en/download.html
一般用wget下载(1.14.2版本为例)
wget -c https://nginx.org/download/nginx-1.14.2.tar.gz
下载好后解压,并且进入解压后的目录(具体命令以自己下载版本为准)
tar -zvxf nginx-1.14.2.tar.gz cd nginx-1.14.2
配置(使用默认配置)
./configure
编译安装
make make install
一般nginx安装好后都在 /usr/local/nginx,不过有可能以后会改变,使用whereis nginx查找nginx安装位置
whereis nginx
进入nginx的安装文件地址,看到有个sbin文件夹,里面有个叫nginx的文件
cd /usr/local/nginx/sbin #启动nginx ./nginx #停止nginx,此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。 ./nginx -s stop #停止nginx,此方式停止步骤是待nginx进程处理任务完毕进行停止。 ./nginx -s quit #重启nginx ./nginx -s reload #查询nginx进程 ps aux|grep nginx
配置负载均衡-upstream:
upstream tomcats{
#上面的tomcats可以是任意字符,起一个命名作用,可以同时配置多个upstream
# server 192.168.85.131:8080 weight=5;
server ip地址1:端口1 weight=权重1;
server ip地址2:端口2 weight=权重2;
......
}
#1、负载均衡的默认策略为轮询:不指定权重;即
upstream tomcats{
server ip地址1:端口1;
server ip地址2:端口2;
......
}
#2、指定权重;即
upstream tomcats{
server ip地址1:端口1 weight=权重1;
server ip地址2:端口2 weight=权重2;
......
}
#3、ip绑定ip_hash:某个IP只能一直走其中一个服务器,可以解决负载均衡的session问题;
#即
upstream tomcats{
ip_hash;
server ip地址1:端口1;
server ip地址2:端口2;
......
}
#4、fair(扩展策略,默认不被编译进nginx内核):据后端服务器的响应时间判断负载情
#况,从中选出负载最轻的机器进行分流;即
upstream tomcats{
server ip地址1:端口1;
server ip地址2:端口2;
......
fair;
}
#5、url_hash(扩展策略,默认不被编译进nginx内核):按访问url的hash结果来分配请
#求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效;即
upstream tomcats{
server ip地址1:端口1;
server ip地址2:端口2;
hash $请求地址;
hash_method crc32(hash算法);
}
#其中:
#upstream还可以为每个设备设置状态值,这些状态值的含义分别如下(状态值放在最后):
#down 表示单前的server暂时不参与负载.
#weight 默认为1.weight越大,负载的权重就越大。
#max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
#fail_timeout : max_fails次失败后,暂停的时间。
#backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
配置负载均衡-server:
server {
listen 80;
#listen port 监听的端口
server_name xjfcloud.cn *.xjfcloud.cn;
#server_name 监听的访问域名,可以匹配具体域名,*号通配符开头的域名,
#*号通配符结尾的域名,最后正则表达式的域名
#charset koi8-r;
#access_log logs/host.access.log main;
location =^~/api {
#locarion 匹配路径,可以有多种表达方式,具体路径,通配符,正则表达式,
#带参数的:
#= 开头表示精确匹配
#^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
#~ 开头表示区分大小写的正则匹配
#~* 开头表示不区分大小写的正则匹配
#!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
#/ 通用匹配,任何请求都会匹配到。
proxy_pass http://tomcats/api/;
#这里可以是root,也可以是proxy_pass,root为本地文件,而proxy_pass可
#以和上面的upstream合用用来配置负载均衡,也可以单用一个远程地址
index index.html index.htm;
#index 默认的首页文件
}
访问错误配置
error_page 404 /404.html; #error_page 错误码 当错误发生时跳转的网页