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 错误码 当错误发生时跳转的网页