0%

Nginx学习笔记

前言

这个是个人学习Nginx基本使用所总结的笔记,仅供参考

1. Nginx基本概念

1.1 Nginx概念

一个高性能的HTTP和反向代理web服务器,专为性能优化而开发,能承受高并发连接

1.2 正向代理与反向代理

正向代理:在客户端配置代理服务器,必须要通过代理服务器才能访问互联网;

反向代理:只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端(此时对外暴露的是代理服务器的地址,隐藏了真实服务器的IP地址

1.3 负载均衡

负载均衡:通过增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上改为分发到多个服务器上,即将负载分发到不同的服务器上

1.4 动静分离

动静分离将动态页面和静态页面由不同的服务器来解析(先把请求发送到Nginx,Nginx根据请求进行转发,服务器Tomcat部署动态资源,专门服务器部署静态资源),加快解析速度和降低原来单个服务器的压力;

2. Nginx常用命令

注意:使用Nginx操作命令必须要先进入Nginx的目录**/user/local/nginx/sbin**

  1. 查看Nginx版本号:**./nginx -v**

  2. 启动Nginx:**./nginx**

  3. 关闭Nginx:**./nginx -s stop**

  4. 重新加载Nginx(热部署):**./nginx -s reload**

3. Nginx配置文件

3.1 Nginx配置文件组成

Nginx配置文件由三部分组成:

  • 第一部分:全局块
    主要配置一些影响Nginx服务器整体运行的配置指令;

  • 第二部分:events块
    主要影响Nginx服务器与用户的网络连接,影响Nginx的性能;

  • 第三部分:http块(http块包括http全局块和server块,server块又包含全局server块和location块)

    主要配置如代理、缓存和日志定义等绝大多数功能和第三方模块的配置

4. Nginx配置实例

4.1 实例1:反向代理

使用Nginx反向代理,可以根据访问的路径跳转到不同端口的服务中;

利用Nginx实现反向代理的步骤如下:

  1. 在window的HOST文件添加域名和ip对应关系的配置(Nginx服务器中的ip地址 要访问的域名)

  2. 在Nginx的配置文件的server块进行如下参数配置

    • server_name Nginx服务器中的ip地址(将localhost改为该ip地址)
    • location中添加转发路径:proxy_pass 转发到真正要访问的ip地址

实现例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 实现效果:
# Nginx监听端口9001,当访问edu模块时,跳转到8080端口,当访问vod模块时跳转到8081端口(实现访问http://ip地址:9001/edu/直接跳转到http://ip地址:8080的效果)

server {
listen 9091
server_name Nginx服务器中的ip地址

location ~ /edu/ {
proxy_pass http://ip地址:8080
}
location ~ /vod/ {
proxy_pass http://ip地址:8081
}
}
# 注意:如果location的uri包含正则表达式,则必须要有~或者~*标识

4.2 实例2:负载均衡

实现例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 实现效果:
# 浏览器地址栏输入地址http://Nginx服务器中的ip地址:9001/edu/时,实现负载均衡效果,平均到8080和8081两个端口中

在Nginx的配置文件的http块进行如下参数配置:
upstream 服务名 {
server ip地址:8080
server ip地址:8081
}
server {
listen 9091
server_name ip地址
...
location ~ /edu/ {
proxy_pass http://服务名;
}
}

Nginx分配服务器的策略:

  1. 轮询策略(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机就自动剔除

  2. 权重策略

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

  3. ip_hash策略

    每个请求按访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题

  4. fair策略

    按照后端服务器的响应时间来分配请求,响应时间短的优先分配

4.3 实例3:动静分离

同样需要在Nginx配置文件中对location进行配置

5. Nginx高可用集群搭建

(后续继续学习)

6. Nginx原理解析

结构:master负责管理监控请求派发给worker,worker通过争抢机制完成任务

  1. Nginx中一个master和多个worker进程的好处:

    • 可以使用**./nginx -s reload热部署**;
    • 每个worker是独立的进程,其中一个worker出现问题不会影响其他worker进行争抢实现请求过程,不会造成服务中断;
  2. 设计多个worker才是合适的:

    worker数和服务器的CPU数量相等最为合适;

  3. nginx支持的最大并发数:

  • 普通的静态访问最大并发数
    worker最大连接数 * worker数 / 2
  • HTTP作为反向代理最大并发数
    worker最大连接数 * worker数 / 4