Nginx 正向代理、反向代理和负载均衡

正向代理

正向代理是客户端的代理,为客户端收发请求,使真实客户端对服务器不可见。客户端需要明确地配置代理服务器的地址和端口,然后通过代理服务器来访问目标服务器。正向代理常用于访问外网受限的环境,或者隐藏客户端的真实 IP 地址。

反向代理

反向代理是服务器端的代理,为服务器接收客户端的请求,将请求转发给内部的服务器,并将内部服务器的响应返回给客户端。客户端只知道反向代理服务器的地址,而不知道内部服务器的真实地址。反向代理常用于隐藏服务器的真实 IP 地址,提高服务器的安全性,以及实现负载均衡等功能。

负载均衡

负载均衡是将客户端的请求均匀地分配到多个服务器上,以提高系统的处理能力和可用性。当有大量客户端请求时,负载均衡器可以根据一定的算法(如轮询、IP 哈希等)将请求分发到不同的服务器上,避免单个服务器过载。

正向代理配置

假设我们要配置一个 Nginx 正向代理服务器,允许客户端通过该代理服务器访问外网。

复制代码
# 编辑 nginx.conf 文件
server {
    listen 8080;  # 监听的端口

    location / {
        proxy_pass http://$host$request_uri;
        proxy_set_header Host $host;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0k;
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_next_upstream error timeout invalid_header http_502;
    }
}

配置说明

  • listen 8080:指定 Nginx 正向代理服务器监听的端口为 8080。
  • proxy_pass http://$host$request_uri:将客户端的请求转发到目标服务器。
  • proxy_set_header Host $host:设置请求头中的 Host 字段,确保目标服务器能正确识别请求的主机。
反向代理配置

假设我们有一个内部服务器 192.168.1.100:8080,我们要配置 Nginx 作为反向代理服务器,将客户端的请求转发到该内部服务器。

复制代码
# 编辑 nginx.conf 文件
server {
    listen 80;  # 监听的端口
    server_name example.com;  # 域名

    location / {
        proxy_pass http://192.168.1.100:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

配置说明

  • listen 80:指定 Nginx 反向代理服务器监听的端口为 80。
  • server_name example.com:指定域名,客户端通过该域名访问反向代理服务器。
  • proxy_pass http://192.168.1.100:8080:将客户端的请求转发到内部服务器。
  • proxy_set_header:设置请求头信息,将客户端的真实 IP 地址传递给内部服务器。
负载均衡配置

假设我们有两个内部服务器 192.168.1.100:8080192.168.1.101:8080,我们要配置 Nginx 作为负载均衡器,将客户端的请求均匀地分配到这两个服务器上。

复制代码
# 编辑 nginx.conf 文件
http {
    upstream backend {
        server 192.168.1.100:8080;
        server 192.168.1.101:8080;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

配置说明

  • upstream backend:定义一个名为 backend 的上游服务器组,包含两个内部服务器。
  • proxy_pass http://backend:将客户端的请求转发到 backend 上游服务器组,Nginx 会根据默认的轮询算法将请求均匀地分配到两个服务器上。

配置生效

在完成上述配置后,需要重新加载 Nginx 配置文件,使配置生效。可以使用以下命令:

复制代码
nginx -s reload
相关推荐
卓码软件测评1 小时前
第三方软件测评机构:【Gatling与JMeter的架构对比:异步与非阻塞I/O模型如何实现更高并发】
测试工具·jmeter·架构·测试用例·负载均衡·压力测试
zhuyasen1 小时前
Go Web 开发利器:如何让你的 Gin 服务拥有 Nginx 般的静态文件处理能力?
nginx·go·gin
achi0101 小时前
Ubuntu 24.04 LTS 下 Vue 3 开发环境搭建与生产部署完整指南
nginx·node·nvm·vue 3·ubuntu 24·开发环境搭建·国内镜像仓库
数据库学啊2 小时前
团队小希望运维简单,时序数据库选型有什么推荐?
运维·数据库·时序数据库
霍格沃兹软件测试开发2 小时前
Playwright MCP浏览器自动化指南:让AI精准理解你的命令
运维·人工智能·自动化
郝学胜-神的一滴3 小时前
Linux命名管道:创建与原理详解
linux·运维·服务器·开发语言·c++·程序人生·个人开发
wanhengidc3 小时前
云手机性能如何?
运维·服务器·科技·智能手机·云计算
wan_da_ren4 小时前
Docker安装Elasticsearch9.2.1与Kibana9.2.1 保姆教程(带验证版)
运维·docker·jenkins
Eric.Lee20215 小时前
ubuntu 安装 Miniconda
linux·运维·python·ubuntu·miniconda
杭州泽沃电子科技有限公司5 小时前
在线监测:为医药精细化工奠定安全、合规与质量基石
运维·人工智能·物联网·安全·智能监测