Nginx 简介

是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强

Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,能支持高 达 50000 个并发连接数。

反向代理 其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

负载均衡

动静分离 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

Nginx 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker pull nginx:1.10

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.10

docker container cp nginx:/etc/nginx /mydata/nginx/

mv /mydata/nginx/nginx /mydata/nginx/conf

docker stop nginx
docker rm nginx

docker run -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

(1)关闭防火墙

(2)开放访问的端口号,80 端口

1
2
3
4
5
6
7
查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd –reload

Nginx 的常用的命令

1
2
3
4
5
6
7
8
1、查看 nginx 版本号
./nginx -v
2、启动 nginx
./nginx
3、停止 nginx
./nginx -s stop
4、重新加载 nginx
./nginx -s reload

nginx.conf

包含三部分内容

全局块:配置服务器整体运行的配置指令比如 worker_processes 1 处理并发数的配置

events 块:影响 Nginx 服务器与用户的网络连接 比如 worker_connections 1024 支持的最大连接数为 1024

http 块:http 全局块 ;server 块

负载均衡

在 nginx 的配置文件中进行负载均衡的配置

nginx 分配服务器策略

轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

weight 代表权重默认为 1,权重越高被分配的客户端越多

ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

动静分离

通过 location 指定不同的后缀名实现不同的请求转发。

集群

(1)需要两台服务器 192.168.17.129 和 192.168.17.131

(2)在两台服务器安装 nginx

(3)在两台服务器安装 keepalived

修改/etc/keepalived/keepalivec.conf 配置文件