【Nginx】Nginx代理模式相关概念解释及Nginx安装

Nginx代理模式

Nginx 是一个高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3代理服务。它可以在多种场景下使用,其中就包括正向代理和反向代理模式。

相关概念

反向代理 (Reverse Proxy)

在反向代理模式中,Nginx 通常位于网络的内部,作为客户端请求到达的第一个接触点。客户端(如Web浏览器)并不直接连接到后端服务器,而是将请求发送到 Nginx。Nginx 然后根据配置规则,将这些请求转发给内部网络中的适当服务器,并将响应返回给客户端。这种设置可以隐藏后端服务器的真实IP地址,提供额外的安全层,并且可以实现负载均衡、缓存等功能。

反向代理的主要用途包括:

  • 负载均衡:分发流量到多个后端服务器。
  • 安全:隐藏真实服务器,保护免受直接攻击。
  • 缓存:减少对后端服务器的请求,加速页面加载。
  • SSL 终止:处理加密和解密,减轻后端服务器负担。

正向代理 (Forward Proxy)

正向代理则是在客户端与外部网络之间的中介。当内部网络中的客户端需要访问外部资源时,它们会通过正向代理服务器发出请求。正向代理服务器可以检查并控制哪些请求被允许或拒绝。此外,它还可以用于缓存外部资源,以提高性能和节省带宽。

正向代理的主要用途包括:

  • 控制访问:限制内部用户对外部网络的访问。
  • 匿名性:隐藏客户端的真实IP地址。
  • 缓存:存储频繁访问的内容副本,减少重复下载。
  • 绕过过滤:在某些情况下,帮助用户访问被封锁的网站。

负载均衡(Load Balancing)

负载均衡是一种计算机网络技术,用于将工作负载分布到多个计算资源(如计算机、服务器、网络链路或其它资源)上。其目的是优化资源使用,最大化吞吐量,最小化响应时间,并确保没有单一资源过载。通过有效地分配任务,负载均衡可以提高系统的可靠性和可用性。负载均衡的工作原理:

负载均衡器位于客户端和服务器之间,作为流量的入口点。当一个请求到达时,负载均衡器根据预定义的算法选择一台后端服务器来处理这个请求。它会持续监控所有连接的服务器的状态,确保流量只被引导至健康的服务器。

常见的负载均衡算法

  1. 轮询 (Round Robin): 每个请求按顺序轮流分配给不同的服务器。
  2. 加权轮询 (Weighted Round Robin): 类似于轮询,但是每个服务器有一个权重值,权重越高的服务器获得更多的请求。
  3. 最少连接 (Least Connections): 将新请求发送给当前活动连接数最少的服务器。
  4. IP哈希 (IP Hash): 根据客户端的IP地址计算出一个哈希值,并始终将该客户端的请求发送到同一台服务器。
  5. URL哈希 (URL Hash): 类似于IP哈希,但基于URL的一部分来决定目标服务器。
  6. 响应时间 (Response Time): 选择响应时间最短的服务器。
  7. 随机选择 (Random Selection): 随机选择一台服务器。

安装与配置

下载 nginx 包后解压到 D 盘 nginx 文件夹下,双击应用程序 nginx.exe 运行(在任务管理器中可结束进程)

D:\nginx\conf 目录下 nginx.conf 文件配置

conf 复制代码
server {
	listen       80;
	server_name  127.0.0.1;
    location / {
		proxy_pass   http://testnginx;
		root   html;
		index  index.html index.htm;
    }
}

ip_hash 在 upstream 配置中的定义

conf 复制代码
upstream servertest {
	server 192.168.1.146:8080 down;
	server 192.168.1.146:8081 weight=3;
	server 192.168.1.146:8082;
	server 192.168.1.146:8083 backup;
	ip_hash;
}
  • down:表示当前 server 暂时不参与负载
  • Weight:默认为1,weight 越大,负载的权重就越大。
  • max_fails:允许请求失败的次数默认为1。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误
  • fail_timeout:max_fails 次失败后,暂停的时间。
  • Backup:其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。(压力最轻)
相关推荐
钟良堂1 分钟前
Spring Boot自动装配代码详解
java·spring boot·spring·自动装配
想要打 Acm 的小周同学呀27 分钟前
SpringBoot框架开发中常用的注解
java·spring boot·后端·项目开发
TPBoreas34 分钟前
Spring Boot 内置工具类
java·spring boot·后端
浪里渔夫40 分钟前
Lombok @Data无法 import 导入的问题解决办法
java·lombok
w3625012661 小时前
Java NIO
java·开发语言·nio
Java 第一深情1 小时前
面试题解,JVM中的“类加载”剖析
java·jvm
m0_748244962 小时前
Tomcat 的安装(详细教程)
java·tomcat
一弓虽3 小时前
java 基础学习——java 异常详细介绍
java·学习·throw
CharlesC++3 小时前
JAVA类和对象练习
java·开发语言
π大星星️3 小时前
haproxy+nginx负载均衡实验
linux·运维·服务器·笔记·nginx·负载均衡