概述

Nginx是免费的、开源的、高效能的Http和反向代理服务器。在Web服务器领域取得显著成就,广泛应用于网站部署、API代理、静态资源服务以及微服务架构中。

安装

Centos安装 nginx

1.Nginx默认不在Centos标准仓库中,需要先安装EPEL仓库

1
sudo yum install epel-release

2.安装nginx

1
sudo yum install nginx

3.启动并启用nginx

1
2
sudo systemctl start nginx
sudo systemctl enable nginx

4.检查运行状态

1
sudo systemctl status nginx

5.相关信息

1
2
3
4
1.可执行文件路径:/usr/sbin/nginx
2.配置文件位置:/etc/nginx/nginx.conf
3.默认网站路径:/usr/share/nginx/html
4.日志目录:/var/log/nginx/

源代码安装(适用内网部署)

1.安装编译依赖

1
sudo yum groupinstall "Development Tools" -y sudo yum install pcre-devel zlib-devel openssl-devel -y

2.下载nginx源码

1
sudo wget http://nginx.org/download/nginx-1.22.1.tar.gz

3.解压压缩包

1
2
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

4.编译安装

1
2
3
./configure
make
make install

5.检查nginx安装

1
/usr/local/nginx/sbin/nginx -v

6.启动nginx

1
sudo /usr/local/nginx/sbin/nginx

Windows安装

1.访问nginx官网进入下载页面,下载nginx的压缩包

2.解压缩到本地,运行 nginx.exe 文件即可

使用

0.参考链接:https://blog.csdn.net/weixin_63657273/article/details/141337393

1.nginx的主配置文件为:nginx.conf

2.配置文件格式

  • 配置文件由指令和指令块构成,每条指令以 ; 结尾,指令与值之间以空格分隔。
  • 多条指令可以放在同一行,以 ; 分隔。
  • 指令块以 {} 大括号将多条指令组织在一起,可以进行嵌套使用
  • 可以使用 # 添加注释,提高可读性

3.主配置文件结构和部分配置说明

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
32
33
34
35
36
37
38
39
40
41
42
43
# 设置运行nginx的用户
user nginx;

# 工作进程数,建议根据CPU的核心数设置成auto
worker_processes auto;

# 指定nginx运行进程ID的位置
pid /var/run/nginx.pid;

# 主配置段,即全局配置,也称时间快,包含与工作进程和连接相关的配置。
event {
# 每个worker进程的最大连接数
worker_connections 1024;
}

# http/https 协议相关配置段
http {
# 引入mine类型的文件,以便nginx能够识别不同的文件类型
include mime.types;

# 设置默认的 MIME 类型
default_type application/octet-stream; # 默认 MIME 类型

# 访问日志的位置和格式
#access_log logs/access.log main;

# 启用高效的文件传输方式
sendfile on;

# 合并数据包,提高性能
tcp_nopush on;

# 减少延迟
tcp_nodelay on;

# 连接保持的超时时间
keepalive_timeout 65;

# 定义虚拟主机不同站点配置,通常每个server块对应一个站点或域名
server {

}
}

3.Server块配置说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
# 监听端口,默认90
listen 80;

# 指定域名或主机
server_name localhost;

# 网站根目录
root /usr/share/nginx/html;

# 默认首页文件
index index.html index.htm;

# Location块,用于匹配请求的url,并根据匹配的情况进行不同操作
location = /404.html {
}
}

4.Location配置说明

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
32
33
34
35
36
37
38
39
1.匹配规则
(1)前缀匹配:直接匹配URL的路径前缀

(2)精确匹配:使用 = 来精确匹配URL路径

(3)正则匹配:使用 ~ 或 ~* 来进行大小写敏感或不敏感的匹配


2.常用操作指令
(1)root和alis
root:指定亲求url对应的文件系统目录。location /images/ { root /data;} 这个配置会在这个 /data/images/ 目录下查找。
alis:与root类似,不过它是替代整个url部分。location /images/ { alias /data/images/;} 这个配置会在 /data/images/ 这个目录下查找。

(2)try_files:尝试按照指定顺序查找,找到第一个文件后返回,如果如果找不到可以选择返回404或其他错误。
location / { try_files $uri $uri/ =404; # 尝试找文件,找不到返回 404 错误 }

(3)反向代理(proxy_pass)
proxy_pass:将请求转发到后端服务器,常用于反向代理。
location /api/ {
# 将 /api/ 请求转发到 http://backend_server
proxy_pass http://backend_server;
}

(4)重定向(rewrite)
rewrite:根据正则表达式怼url进行重写(修改亲求的url),可以支持两种类型的重定向,permanent:表示永久重定向,返回 HTTP 状态码 301。redirect:表示临时重定向,返回 HTTP 状态码 302。
location /old/ {
# 将 /old/ 路径重定向到 /new/
rewrite ^/old/(.*)$ /new/$1 permanent;
}

(5)访问控制(allow, deny)
allow和deny:控制那些IP地址可以访问该路径,可以基于IP地址/子网等进行限制。
location /admin/ {
# 允许 192.168.1.0/24 网段的访问
allow 192.168.1.0/24;

# 拒绝所有其他访问
deny all;
}