博客
关于我
nginx的正向代理和反向代理
阅读量:797 次
发布时间:2023-02-15

本文共 3439 字,大约阅读时间需要 11 分钟。

一、正向代理及缓存配置

正向代理是指客户端通过代理服务器接触目标服务端的代理方式。与直接访问服务端相比,正向代理的优势在于可隐藏客户端IP地址,提升网络安全性。Nginx正向代理的核心配置主要包括proxy_pass指令和缓存设置。

正向代理指定百度网址访问

Nginx正向代理的基本配置示例如下:

server {    listen 8888;    server_name localhost;    resolver 8.8.8.8 valid=300 ipv6=off;    proxy_read_timeout 30s;    proxy_send_timeout 30s;    proxy_connect_timeout 30s;    charset utf-8;    access_log logs/host.access.log main;    location / {        root html;        index index.html index.htm;        proxy_pass scheme://http_host$request_uri;        proxy_set_header Host $http_host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;        proxy_set_header X-Forwarded-Host $host;        proxy_set_header X-Forwarded-Port $upstream_port;    }}

正向代理指定所有网址

完整的正向代理配置示例:

server {    listen 80;    server_name example.com;    resolver 8.8.8.8 valid=300 ipv6=off;    proxy_read_timeout 30s;    proxy_send_timeout 30s;    proxy_connect_timeout 30s;    charset utf-8;    access_log logs/nginx/access.log main;    location / {        root html;        index index.html index.htm;        proxy_pass http://backend.example.com;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;        proxy_set_header X-Forwarded-Host $host;        proxy_set_header X-Forwarded-Port $upstream_port;    }}

二、反向代理

反向代理(负载均衡)是指代理服务器将客户端请求转发至多台后端服务器之一。其主要作用包括请求分配、负载均衡、系统可用性、缓存加速及安全防护等。

反向代理的核心配置包括负载均衡算法、后端服务器管理及会话保持等功能。

三、四层代理与七层代理的区别

四层代理(传输层)仅处理IP地址和端口,实现简单的数据转发,速度较快,适合内部使用,未对请求进行深度处理。

七层代理(应用层)基于HTTP协议,能够解析请求,提供更高级功能,如安全、过滤、流量控制等,适用于对外服务的场景。

四、负载均衡配置及算法

负载均衡配置需根据具体需求选择合适的算法,常用算法包括轮巡、加权轮巡、最小连接数及IP_hash等。

1. 轮巡算法(round robin):适用于后端服务器性能相同的情况,请求按顺序轮流分配。

2. 加权轮巡(weighted round robin):可为每台服务器设置权重,流量按权重比例分配。

3. 最小连接数算法(least_conn):将请求发送至连接数较少的后端服务器,避免负载集中。

4. IP hash算法(ip_hash):根据客户端IP计算Hash值,固定分配至同一服务器,适合高并发场景。

五、配置方法

1. 七层代理配置需在http模块中使用upstream命令,指定后端服务器地址及权重。

2. 四层代理配置需在全局配置中使用stream命令,指定负载均衡算法及权重。

示例:七层负载均衡配置

http {    upstream backend 192.168.1.100 weight=1;    upstream backend2 192.168.1.101 weight=1;        server {        listen 80;        server_name example.com;        proxy_pass http://backend;    }}

示例:四层负载均衡配置

events {}    stream {        upstream backend 192.168.1.100:80 weight=1;        upstream backend2 192.168.1.101:80 weight=1;                server {            listen 80;            proxy_pass stream_backend;        }    }
六、实验

基于域名的反向代理配置示例:

在Nginx配置中,需先配置resolver解析器,指定DNS服务器及缓存时间:

server {    listen 80;    server_name example.com;    resolver 192.168.1.1 valid=300;        location / {        proxy_pass http://backend.example.com;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }}

三个IP的反向代理配置示例:

server {    listen 80;    server_name 192.168.1.100 192.168.1.101 192.168.1.102;    resolver 192.168.1.1 valid=300;        location / {        proxy_pass http://backend.example.com;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }}

七、四层代理

四层代理配置需在全局配置中使用stream模块:

events {}    stream {        upstream backend 192.168.1.100:80 weight=1;        upstream backend2 192.168.1.101:80 weight=1;                server {            listen 80;            proxy_pass stream_backend;        }    }

注意事项:四层代理需确保后端服务器监听的端口与配置一致,避免冲突。

转载地址:http://fzjfk.baihongyu.com/

你可能感兴趣的文章
nginx: [emerg] getpwnam(“www”) failed 错误处理方法
查看>>
nginx: [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:
查看>>
nginx:Error ./configure: error: the HTTP rewrite module requires the PCRE library
查看>>
Nginx:objs/Makefile:432: recipe for target ‘objs/src/core/ngx_murmurhash.o‘解决方法
查看>>
nginxWebUI runCmd RCE漏洞复现
查看>>
nginx_rtmp
查看>>
Nginx、HAProxy、LVS
查看>>
nginx一些重要配置说明
查看>>
Nginx下配置codeigniter框架方法
查看>>
Nginx与Tengine安装和使用以及配置健康节点检测
查看>>
Nginx中使用expires指令实现配置浏览器缓存
查看>>
Nginx中使用keepalive实现保持上游长连接实现提高吞吐量示例与测试
查看>>
Nginx中实现流量控制(限制给定时间内HTTP请求的数量)示例
查看>>
nginx中配置root和alias的区别
查看>>
nginx主要流程(未完成)
查看>>
Nginx之二:nginx.conf简单配置(参数详解)
查看>>
Nginx从入门到精通
查看>>
Nginx从安装到高可用,一篇搞定!
查看>>
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>