Nginx 笔记
一、Nginx 基本概念
Nginx 简介
Nginx 是主流的、高性能的 HTTP 服务器和反向代理 web 服务器,占有内存少,并发能力强。可以用于挂载网站、请求转发、负载均衡、网关路由等。
正向代理
正向代理和反向代理的优质文章:
正向代理是客户端的代理,客户端通过配置正向代理服务器,使用正向代理获取目标服务器的资源。
正向代理的作用:
- 访问原来无法访问的资源
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录,对外隐藏用户信息
反向代理
反向代理是服务端的代理,反向代理对外透明,访问者不知道自己访问的是一个代理。
反向代理的作用:
- 保证内网安全,防止 web 攻击
- 负载均衡
负载均衡
负载均衡,见名知义,就是将请求分发到多台服务器上,将之前的集中式改为分布式,从而将负载分发到不同服务器上,使负载均衡。
动静分离
动态资源和静态资源由不同的服务器解析,加快解析速度,降低单个服务器的压力。
二、Nginx 安装
Linux 环境下安装:
安装依赖包
1
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
下载并安装 Nginx
1
2
3
4
5
6cd /usr/local
wget wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure
make && make install启动 Nginx
1
2cd /usr/local/nginx/sbin
./nginx开放 80 端口,重启防火墙
1
2firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload访问:http://你的Linux主机ip:80,出现 Welcome 就成功咯
三、常用命令和配置文件
常用命令
使用 Nginx 命令的前提是进入到 /usr/local/nginx/sbin
目录
1 | ./nginx # 启动 |
配置文件
Nginx 配置文件位置:/usr/local/nginx/conf/nginx.conf
1 | #user nobody; |
第一部分:全局块
events 块之前的内容,主要设置一些 nginx 服务器整体运行的配置指令。
例如:
1 | worker_processes 1; |
这是并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是
会受到硬件、软件等设备的制约。
第二部分:events 块
events 块中的指令主要影响 nginx 服务器与用户的网络连接。
例如:
1 | events { |
第三部分:http 块
http 块是配置最频繁的部分,代理、缓存、日志定义等大部分功能都在 http 块中。
http 块包括:http 全局块和 server 块
① http 全局块
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
② server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,每个 server 块就相当于一个虚拟主机。
一个 server 块包含全局 server 块、多个 location 块。
- 全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。 - location 块
这块的主要作用是基于 Nginx 服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
location 指令说明
location 指令用来匹配 URL。
语法:location [ = | ~ | ~* | ^~ ] uri {...}
参数 | 说明 |
---|---|
无参 | 前缀匹配 |
= | 精确匹配 |
~ | 正则匹配,区分大小写 |
~* | 正则匹配,不区分大小写 |
^~ | 前缀匹配,表示 URI 以某个常规字符串开头 |
匹配顺序:
- 精确匹配
=
- 前缀匹配
^~
- 配置文件中的正则匹配
~ | ~*
- 前缀匹配
无参
- 通用匹配
/
四、Nginx 的应用
反向代理
上边介绍了反向代理,请求访问资源时,实际上经过了反向代理服务器,nginx 会根据配置将特定的请求转发到对应的服务器。
例如:我们访问 Nginx localhost:80
,会代理到 Tomcat localhost:8080
页面
1 | # 反向代理配置 |
负载均衡
1 | http { |
在这个配置中,我们创建了一个名为 backend
的上游服务器组,其中包含了两个后端服务器。然后,我们定义了一个HTTP服务器块,监听端口80,并且指定了服务器名。在 location /
块内,我们使用了 proxy_pass
指令将请求转发给上游服务器组。此外,还设置了一些 HTTP 头部,以确保后端服务器正确地获取客户端的真实 IP 地址和协议。
你可以根据自己的需求调整这个配置,比如更改负载均衡策略、添加健康检查等。完成配置后,通过测试来验证配置的正确性,并通过 nginx -t
命令来检查 Nginx 配置文件的语法错误。最后,使用 sudo systemctl restart nginx
重启NGINX以使配置生效。