nginx入门

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

1、正向代理与反向代理

1.1 正向代理:代理服务器代表的是客户端,代理对服务器端透明。

正向代理的应用场景:

  • vpn
  • 缓存,加速访问资源
  • 对客户端访问授权,上网进行认证
  • 记录用户的上网记录,对外隐藏用户信息

正向代理产品:CCProxy

1.2 反向代理:代理服务器代表的是服务器端,代理对客户端透明

反向代理的应用场景:

  • 保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击
  • 负载均衡

反向代理产品:Nginx

正向代理和反向代理

2、nginx安装

2.1 安装环境

  • yum -y install wget #安装下载工具
  • yum install -y gcc gcc-c++ #安装gcc编译环境
  • yum install -y pcre-devel #安装PERE库
  • yum -y install openssl openssl-devel #安装OpenSsl库

2.2 准备安装nginx

  • wget http://nginx.org/download/nginx-1.14.0.tar.gz #下载
  • tar -zxf nginx-1.14.0.tar.gz #解压
  • cd nginx-1.14.0
  • sed -i -e’s/1.14.0//g’ -e’ s/nginx\//WS/g’ -e’s/“NGINX”/“WS”/g’ src/core/nginx.h #隐藏版本号(安全性考虑,爆出有些版本的nginx存在漏洞,容易被攻击)

2.3编译安装nginx

  • useradd www #添加用户,不添加默认为nobody
  • ./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_ssl_module
  • make & make install

3、nginx的五种负载分配算法

3.1 round robin(默认)

轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。
适用于后台机器性能一致的情况。
挂掉的机器可以自动从服务列表中剔除。

3.2 weight

根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

1
2
3
4
upstream bakend {    
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3.3 IP_hash

根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题

1
2
3
4
5
upstream bakend {    
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

3.4 url_hash(第三方)

根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。
例如:
在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

1
2
3
4
5
6
upstream backend {    
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

3.5 fair(第三方)

根据后台响应时间来分发请求,响应时间短的分发的请求多。
例如:

1
2
3
4
5
upstream backend {    
server server1;
server server2;
fair;
}