nginx的正向代理和反向代理,以及相关配置的详细解释

  • 概念:
    • nginx:是一款高性能的HTTP和反向代理服务器。它的诞生背景主要是为了应对当时大量并发连接的需求,尤其是在高流量网站上,传统的Apache服务器在处理并发连接时表现不佳
  • 使用场景:
    • 静态文件服务器:Nginx特别擅长处理静态文件,如HTML、CSS和图像,能够快速响应请求。
    • 反向代理服务器:可以将请求转发到后端应用服务器(如Node.js、Django等),提供负载均衡和提高应用的可用性。
    • 负载均衡:可以将流量分发到多个服务器上,以提高应用的可靠性和性能。
    • SSL/TLS终端:Nginx可以处理HTTPS请求,解密SSL/TLS流量,减轻后端服务器的负担。
    • API网关:在微服务架构中,Nginx常用作API网关,管理和路由API请求。
    • 内容缓存:Nginx可以缓存内容,提高响应速度和减轻后端负担。
    • WebSocket支持:支持实时通信场景,如聊天应用。
    • 高可用性:通过配置Nginx,能够实现高可用架构,确保系统在高负载下仍然稳定运行。
  • 关于正向代理和反向代理
    • 正向代理:知道目标服务器,但是出于安全或是别的原因,不想让目标服务器获取我们的IP地址,实现这种的方式就是正向代理
    • 反向代理:反向代理指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。
      反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的
  • 关于nginx中的配置解释
    • 正向代理:
    • server {
          listen 8080;
      
          location / {
              resolver 8.8.8.8;  # 使用Google的公共DNS
              proxy_pass http://$http_host$request_uri;  # 转发请求
              proxy_set_header Host $http_host;  # 保留原始Host头
              proxy_set_header X-Real-IP $remote_addr;  # 转发客户端IP
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 转发X-Forwarded-For头
          }
      }
      

    • listen 8080:Nginx将在8080端口监听请求。

    • resolver 8.8.8.8:设置DNS解析器,Nginx将使用这个DNS来解析目标主机。

    • proxy_pass http://$http_host$request_uri:将请求转发到目标主机,$http_host表示原始请求的主机名,$request_uri表示请求的URI。

    • proxy_set_header Host $http_host:确保转发请求时保持原始的Host头。

    • proxy_set_header X-Real-IP $remote_addr:转发客户端的真实IP地址。

    • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:将客户端的IP添加到X-Forwarded-For头中,以便后端服务器可以获取原始IP。

                反向代理:

server {
    listen 80;
    server_name example.com;  # 替换为你的域名

    location / {
        proxy_pass http://127.0.0.1:5000;  # 将请求转发到后端应用服务器
        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;  # 转发X-Forwarded-For头
        proxy_set_header X-Forwarded-Proto $scheme;  # 转发协议(http/https)
    }
}

 

  1. listen 80:Nginx将在80端口监听HTTP请求。

  2. server_name example.com:指定服务器的域名,这里需要替换为你自己的域名。

  3. location /:匹配所有请求路径。

  4. **proxy_pass http://127.0.0.1:5000**:将请求转发到本地运行的后端应用服务器(假设它在5000端口上运行)。

  5. proxy_set_header Host $host:确保转发请求时保持原始请求的Host头。

  6. proxy_set_header X-Real-IP $remote_addr:转发客户端的真实IP地址,以便后端应用能够知道请求来源。

  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:将客户端的IP添加到X-Forwarded-For头中,以便后端服务器能够获取原始IP。

  8. proxy_set_header X-Forwarded-Proto $scheme:转发请求的协议(如http或https),方便后端处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值