Nginx代理

Nginx

安装(Linux)

1
2
sudo apt update
sudo apt install nginx

Nginx反向代理

概念

  • 在客户端与真实服务器之间设置一台反向代理服务器,用这台服务器接收请求并将请求转发至内部网络上的真实服务器。
  • 后端服务器处理请求后,响应–>反向代理服务器–>客户端

作用

  • 很显然,当配置合理的转发规则时,将能实现负载均衡
  • 隐藏后端服务器的真实IP,提高安全性
  • 流量控制
  • 可以在Nginx服务器上缓存某些高频访问资源,提高响应速度,实现缓存加速
  • 动静分离:把动态资源和静态资源放在不同服务器上,通过Nginx服务器分别反向代理这些资源,实现静态文件和动态内容的分离,提高访问效率

具体操作示例

  1. 在/etc/nginx/conf.d下创建一个配置文件

​ 简单配置文件内容参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
server{
listen [nginx监听的端口号];
server name [你的域名或IP];

location / {
proxy_pass [要反向代理的URL];
# proxy_set_header可以传递请求头信息,也可以向请求头修改或添加条目
proxy_set_header Host $host;
proxy_set_header ...;
... # 若要代理某个网站,可以设置一些比如User-Agent之类的请求头,防止请求不成功
}
}

  1. 测试配置

    1
    sudo nginx -t
  2. 重新加载配置

    1
    nginx -s reload

Nginx静态代理

概念

类似反向代理,不过专用于代理静态资源,与反向代理的配置有点差异

配置示例

可以直接对Nginx的主配置文件nginx.conf进行编辑,但是复杂配置也可以分成多个配置文件,下面会有讲解

以下为nginx.conf的简单配置示例

代理本地资源

  1. 在nginx.conf下添加server块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
http {
# ...

server{
listen [端口];
server_name [域名或IP];

location / {
root [静态资源目录];
index [默认索引文件]; #例:index.html 可选项

}
}
}
  1. 检查语法是否正确

    1
    nginx -t
  2. 重新加载配置

    1
    nginx -s reload

如何将配置分散到多个文件

可以在nginx.conf的http块下使用include指令来包含其他配置文件

1
2
include /path/to/additional/configs/*.conf 
# 添加指定目录下所有.conf配置文件

代理多台静态文件服务器的资源

  1. 在nginx.conf下添加upstream块以定义upstream服务器组

    1
    2
    3
    4
    5
    upstream static_servers {
    server [实际静态文件服务器的IP地址+端口];
    server []; # 可以添加多个服务器以实现负载均衡
    ...
    }
  2. 添加server块

    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
    http {
    # ...

    server {
    listen 80; # 监听端口,可以根据需要修改
    server_name static.example.com; # 域名或IP地址,用于访问静态文件

    location / {
    proxy_pass http://static_servers; # 代理请求到定义的upstream服务器组
    proxy_set_header Host $host; # 传递请求头中的Host字段
    proxy_set_header X-Real-IP $remote_addr; # 传递请求头中的真实IP地址
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递请求头中的代理链信息

    # 可选:配置缓存以提高性能
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m max_size=1g inactive=60m use_temp_path=off;
    proxy_cache static_cache;
    proxy_cache_valid 200 302 10m; # 对200和302响应码缓存10分钟

    # 可选:配置访问控制、日志等
    # ...
    }

    # 其他location块,用于处理特定路径的请求(可选)
    # ...
    }
    }
  3. 加载配置

    1
    2
    nginx -t
    nginx -s reload

Nginx代理
https://fiy-pc.github.io/2024/11/11/Nginx/
作者
FIY-pc
发布于
2024年11月11日
许可协议