1. Nginx 是什么?

Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器,广泛用于负载均衡、反向代理和 HTTP 缓存等功能。

2. Nginx 解决了什么问题?

  • 高并发连接数请求处理:Nginx 通过异步非阻塞的设计架构,能够高效地处理高并发连接数的请求。
  • 负载均衡:Nginx 可以将客户端的请求均衡分发到后端的多台服务器上,从而提供负载均衡服务。
  • 反向代理:Nginx 可以作为反向代理服务器,将客户端的请求转发到后端的服务器上,从而为客户端提供负载均衡、高可用性和安全性等功能。
  • HTTP 缓存:Nginx 可以将常用的静态文件缓存在内存中,从而提升网站的访问速度。
  • HTTPS服务:Nginx 支持 HTTPS协议,可以为网站提供安全的加密传输服务。

3. Nginx 如何使用?

4. Nginx 相关目录

  • Nginx 安装目录

    • 外网(在线安装):/usr/local/Nginx
  • Nginx 启动目录

    • 外网(在线安装):/usr/local/Nginx/sbin
  • Nginx 日志目录

    • 外网(在线安装):/usr/local/Nginx/logs

5. Nginx 常用命令

命令 解释
Nginx -t 执行配置文件检测
Nginx -t -q 执行配置文件检测,且只输出错误信息
Nginx -v 显示Nginx执行文件的版本信息
Nginx -s stop 快速停止Nginx
Nginx -s reload 重新加载配置文件
Nginx -c /etc/Nginx/Nginx.conf 指定 Nginx.conf 文件的位置

6. Nginx 代理

6.1. 正向代理

正向代理:当我们站在客户端的角度想访问 Google, 正向代理服务器类似一个跳板机,代理访问外部资源。

例如,下面这个例子,我们想访问 Google,但是存在相应的防火墙,无法访问。

  • 首先,先找一个能访问到 Google 的服务器。

  • 然后,我们能够访问这台服务器,作为我们能够访问Google的桥梁。

  • 最后,在让代理服务器将我们想要的数据返回给我们。

image2023-1-3_19-20-3.png

6.2. 反向代理

反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受 internet 上的连接请求。

客户端是无感知代理的存在的,反向代理对外都是透明的,访问者者并不知道自己访问的是一个代理,因为客户端不需要任何配置就可以访问。

例如,我们访问 taobao.com 或者 jd.com 其实 都经过了 很多次代理然后才到的目标服务器。

例子,我们部署的项目

  • 首先,我们通过客户端访问 106.12.78.90 时,会在浏览器得到我们想看到的内容。

  • 然后,但项目部署在 10.10.20.200 这台服务器中,并暴露外网 106.12.78.90 暴露出去。

  • 最后,在服务器 10.10.20.200 内部可能做了多次代理,才访问到我们的Web服务器(10.10.20.189)中。

image2023-1-3_19-27-24.png

6.3. 正向代理、方向代理区别

来自知乎:https://www.zhihu.com/question/24723688

  • 正向代理中,proxy和client同属一个LAN,对server透明;

  • 反向代理中,proxy和server同属一个LAN,对client透明。

image2023-1-3_19-40-39.png

7. Nginx 负载均衡

负载均衡,通过反向代理服务器来优化网站的负载,一台服务器不行就搞多台。

image2023-1-3_19-36-41.png

8. Nginx 配置文件

nginx.conf 配置文件分为如下三个板块:

  • 全局配置
  • I/O 事件配置
  • http 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
worker_processes 1; # 只启动一个工作进程

events {
worker_connections 1024; # 每个工作进程的最大连接为1024
}

http {
include mime.types; # 引入MIME类型映射表文件
default_type application/octet-stream; # 全局默认映射类型为application/octet-stream

sendfile on; # 启用零复制机制
keepalive_timeout 65; # 保持连接超时时间为65s

server { # 虚拟主机配置
listen 80; # 监听80端口的网络连接请求
server_name localhost; # 虚拟主机名为localhost

location / { # 匹配路径
root html; # 文件根目录
index index.html index.htm; # 默认页名称
}

error_page 500 502 503 504 /50x.html; # 报错编码对应页面
location = /50x.html {
root html;
}
}

# 引入其他 nginx 配置文件
include /etc/nginx/conf.d/*.conf;
}

9. 参考博文