nginx 反向代理配置详解

Nginx 反向代理是一种常用的部署策略,用于将客户端请求转发到内部网络中的一个或多个服务器,这些服务器直接处理请求并返回响应给Nginx,再由Nginx转交给客户端。这种设置可以提高网站的可用性和安全性,同时也能实现负载均衡、缓存、SSL 终端等功能。下面是Nginx反向代理配置的详细解析:

基础配置示例

首先,你需要在Nginx的配置文件中定义一个server块来配置反向代理。通常这个文件位于/etc/nginx/sites-available/目录下,或者可能是nginx.confhttp块内,具体取决于你的Nginx安装和配置方式。

Nginx

复制代码
1server {
2    listen 80; # 监听的端口,这里是HTTP的默认端口80
3    server_name yourdomain.com; # 你希望接收请求的域名或IP地址
4
5    location / { # 匹配所有以'/'开头的请求
6        proxy_pass http://backend_server; # 后端服务器地址,可以是域名或IP加端口
7        proxy_set_header Host $host; # 将请求头中的Host字段传给后端服务器
8        proxy_set_header X-Real-IP $remote_addr; # 将客户端的真实IP传给后端服务器
9        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 附加客户端IP到X-Forwarded-For头中
10        proxy_set_header X-Forwarded-Proto $scheme; # 如果使用HTTPS,将协议信息传给后端
11    }
12}

配置项解释

  • listen 80;: 指定Nginx监听的端口,这里配置的是80端口,即HTTP的默认端口。
  • server_name yourdomain.com;: 设置该server块服务的域名或IP地址。
  • location / { ... }: 定义URL匹配规则,这里的/表示匹配所有请求。
    • proxy_pass http://backend_server;: 指定请求应被转发到的后端服务器地址。backend_server应替换为实际的后端服务器地址(例如http://192.168.1.10:8080)。
    • proxy_set_header指令用于设置传递给后端服务器的HTTP头部,这些头部信息对于日志记录、安全性和应用识别非常重要。
      • Host: 保留原始请求的主机名,确保后端可以正确解析请求。
      • X-Real-IPX-Forwarded-For: 记录客户端的实际IP地址,对于访问控制和日志分析很有用。
      • X-Forwarded-Proto: 当使用HTTPS时,告知后端原始请求使用的协议,以便后端可以正确生成链接等。

高级配置

  • 负载均衡 :可以在proxy_pass指令中指定一个服务器列表来实现负载均衡,如proxy_pass http://backend_servers;,其中backend_servers是一个之前定义好的 upstream 名称,里面包含了多个后端服务器地址。

    Nginx

    复制代码
    1upstream backend_servers {
    2    server backend1.example.com;
    3    server backend2.example.com;
    4    server backend3.example.com;
    5}
  • SSL 终端:可以在Nginx上终止SSL连接,然后以未加密的形式将请求转发给后端服务器。

    Nginx

    复制代码
    1server {
    2    listen 443 ssl;
    3    ssl_certificate /path/to/cert.pem;
    4    ssl_certificate_key /path/to/key.pem;
    5    ...
    6}
  • 缓存配置:可以利用Nginx的缓存功能,对某些静态资源或响应进行缓存,提高访问速度和减轻后端压力。

  • 访问控制与安全 :通过allowdeny指令控制访问,以及使用ssl_protocolsssl_ciphers等指令增强SSL安全配置。

以上就是Nginx反向代理的基本配置和一些高级选项。根据实际需求,你可能需要调整或增加更多的配置项。记得每次修改配置文件后,都需要执行sudo nginx -t来测试配置文件的语法是否正确,然后使用sudo nginx -s reload命令来重新加载配置。

相关推荐
什么半岛铁盒1 分钟前
Linux信号的保存
linux·运维·网络
noravinsc29 分钟前
国产化中间件 替换 nginx
运维·nginx·中间件
惜.己1 小时前
Linux常用命令(十四)
linux·运维·服务器
linkingvision2 小时前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储
doupoa2 小时前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
BillKu2 小时前
服务器多JAR程序运行与管理指南
运维·服务器·jar
QQ2740287562 小时前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
ZHOU_WUYI2 小时前
使用 Docker 部署 React + Nginx 应用教程
nginx·react.js·docker
南棱笑笑生3 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
小锋学长生活大爆炸3 小时前
【教程】Docker更换存储位置
运维·docker·容器