nginx之反向代理与端口转发

反向代理

  • 反向代理是指客户端不直接访问服务端,而是通过反向代理服务器来访问服务端资源。反向代理服务器负责转发客户端请求,并将响应结果返回给客户端。通常情况下,反向代理服务器的IP地址对于客户端来说是可见的,而服务端的IP地址则是不可见的。
  • 反向代理通常用于隐藏服务端的真实IP地址,提高系统的安全性和稳定性。同时,反向代理还可以实现负载均衡、缓存加速等功能。
  • proxy_pass 作用是nginx的反向代理,用的是nginx的 Proxy 模块
  • 以下示例 Nginx 监听 80 端口,当客户端请求 example.com 域名时,会将请求转发到 nacos8848(即服务端),并在HTTP头中添加Host和X-Real-IP信息。
http {
    upstream nacos8848{
        ip_hash;
        server 10.30.4.151:8848 max_fails=5 fail_timeout=300s weight=5;
        server 10.30.4.152:8848 max_fails=5 fail_timeout=300s weight=5;
    }

    server {
        listen 80;
        index index.html index.htm;
        server_name example.com;

        location / {
            proxy_pass http://nacos8848;
            proxy_read_timeout 360;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

端口转发

  • 端口转发是指将来自一个端口的数据包转发到另一个端口。通常情况下,在网络中应用层协议只监听一种端口,因此需要端口转发来实现不同应用程序之间的互访
  • 以下示例通过 Nginx 将 HTTP 请求转发到 java 服务器的 8100 端口上
http {
    upstream java8100{
        ip_hash;
        server 10.30.3.201:8100 max_fails=5 fail_timeout=300s weight=5;
        server 10.30.3.202:8100 max_fails=5 fail_timeout=300s weight=5;
    }

    server {
        listen 8100;
        proxy_pass java8100;
        proxy_timeout 300s;
    }
}

如何区分

  • 端口转发也属于一种反向代理
  • 端口转发需要编译nginx的时候指定 --with-stream,而反向代理没有此限制
  • 反向代理主要用来转发http或https请求端口转发主要用来转发tcp请求
Copyright © www.sqlfans.cn 2024 All Right Reserved更新时间: 2024-11-05 16:25:32

results matching ""

    No results matching ""