配置文件【7层代理】

nginx

反向代理

主配置文件

全局配置

4层服务配置

4层反向代理

7层服务配置

反向代理和http服务

worker进程配置

http服务配置

4层反向代理

nginx.conf

global

http

upstream

server

location

if

stream

upstream

server

调度算法

  1. 轮询(Round Robin):这是默认的负载均衡算法。每个请求按时间顺序逐一分配到不同的后端服务器,如果服务器down掉,能自动剔除。

    upstream core_tomcat {       
        server 192.168.1.253:80 max_fails=3 fail_timeout=30;
        server 192.168.1.252:80 max_fails=3 fail_timeout=30;
    }
  2. 加权轮询(Weighted Round Robin):与轮询类似,但是不同的后端服务器可以设置不同的权重,可以根据服务器的处理能力,分配不同数量的请求。权重越高,分配的请求越多。

    upstream core_tomcat {
    server 192.168.1.253:80 weight=2 max_fails=3 fail_timeout=30;
    server 192.168.1.252:80 weight=8 max_fails=3 fail_timeout=30;
    }
  3. IP Hash(ip_hash):根据请求的IP的hash结果分配,每个请求会固定访问一个后端服务器,适用于需要会话保持的应用。这有助于为缓存服务器实现更高的缓存命中率,如果其中一台服务器需要临时删除,则应使用down参数标记该服务器,以保留客户端IP地址的当前哈希值

    upstream core_tomcat {    
      ip_hash;
      server 192.168.1.253:80      max_fails=3 fail_timeout=30;
      server 192.168.1.252:80      max_fails=3 fail_timeout=30;
    }
  4. Fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream core_tomcat {      
      fair;
      server 192.168.1.253:80      max_fails=3 fail_timeout=30;
      server 192.168.1.252:80      max_fails=3 fail_timeout=30;
    }
  5. URL Hash(url_hash):根据请求的URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,适用于服务器缓存时提高效率。

    upstream core_tomcat {       
      hash $request_uri;
      server 192.168.1.253:80      max_fails=3 fail_timeout=30;
      server 192.168.1.252:80      max_fails=3 fail_timeout=30;
    }
  6. 最少连接(least_conn Least Connections):优先分配给当前连接数最少的服务器,适用于请求处理时间相差较大的情况。

  7. URL参数(第三方):按照URL中带的参数进行hash,然后进行请求分发,可以实现会话保持。

七层代理

user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream backend {
# backup 当其他主机失败后使用该主机,不能用在 hash ip_hash 和random 调度算法中
# down 当前主机不可用,当使用ip_hash 中标记为down不会影响hash值
server 172.16.100.10:8080 weight=1 max_fails=3 fail_timeout=30s;
server 172.16.100.11:8080 weight=1 max_fails=3 fail_timeout=30s;
server 172.16.100.12:8080 weight=1 max_fails=3 fail_timeout=30s;
server 172.16.100.13:8080 backup;
server 172.16.100.14:8080 backup;
}
server {
# 设置X-Real-IP头,使用客户端的真实IP地址。
proxy_set_header X-Real-IP $remote_addr;
# 设置X-Forwarded-For头,添加原始请求的IP地址
proxy_set_header X-Forwarded-For $remote_addr;
# 设置代理请求的Host头,使用请求的原始主机名
proxy_set_header Host $host;
client_max_body_size 0;
location / {
proxy_pass http://backend;
}
}
}

参数解释[7层代理]

  • 让应用获取到真实的用户ip

    位置:server、location 指令下

    # 设置X-Real-IP头,使用客户端的真实IP地址。
    proxy_set_header X-Real-IP $remote_addr;
    # 设置X-Forwarded-For头,添加原始请求的IP地址
    proxy_set_header X-Forwarded-For $remote_addr;
  • 设置代理请求的Host头,使用请求的原始主机名

    位置:server、location 指令下

    # 设置代理请求的Host头,使用请求的原始主机名
    proxy_set_header Host $host
  • 客户端请求的最大大小

    位置:http 、server、location指令下

    # 设置客户端请求的最大body大小为50MB
    client_max_body_size 50m;
    # 设置客户端请求body的缓冲区大小为256KB
    client_body_buffer_size 256k;
# 关闭代理服务器的重定向功能。
proxy_redirect off;

timeout

# 设置代理连接超时时间为30秒。
proxy_connect_timeout 30;
# 设置代理发送请求的超时时间为30秒。
proxy_send_timeout 30;
# 设置代理读取响应的超时时间为60秒。
proxy_read_timeout 60;

buffer

#设置代理缓冲区的大小为4KB
proxy_buffer_size 4k;
# 设置代理缓冲区的数量和大小 为4*32KB。
proxy_buffers 4 32k;
# 设置代理忙碌缓冲区的大小为64KB。
proxy_busy_buffers_size 64k;

临时文件

# 设置代理临时文件写入大小为64KB。
proxy_temp_file_write_size 64k;
# 设置代理临时文件的最大大小为128MB。
proxy_max_temp_file_size 128m;

提高代理的容错能力

# 定义当出现错误、超时、无效头部、或HTTP状态码为500、503、404时,请求将被转发到下一个上游服务器。
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

缓存静态内容到本地磁盘

# 开启代理存储静态内容到磁盘的功能
proxy_store on;
# 设置代理存储文件的访问权限。
proxy_store_access user:rw group:rw all:r;
# 定义了代理临时文件存储的路径
proxy_temp_path /dev/shm/nginx_proxy;
posted @   mingtian是吧  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示