安装nginx(centos 7 为例)



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

打开nginx的conf/nginx.conf文件,修改添加配置



配置负载均衡-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 错误码            当错误发生时跳转的网页