nginx安装(windows下)及配置
1. 正向代理和反向代理
正向代理是一个位于客户端【用户A】和原始服务器【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。即代理服务器替代访问方【用户A】去访问目标服务器【服务器B】。客户端必须要进行一些特别的设置才能使用正向代理。当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
用单机tomcat搭建的网站,在比较理想的状态下能够承受的并发访问量在150到200左右。按照并发访问量占总用户数量的5%到10%这样计算,单点tomcat网站的用户人数在1500到4000左右。对于一个为全国范围提供服务的网站显然是不够用的,为了解决这个问题引入了负载均衡方法。负载均衡就是一个web服务器解决不了的问题可以通过多个web服务器来平均分担压力来解决,并发过来的请求被平均分配到多个后台web服务器来处理,这样压力就被分解开来。
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
2. 安装及启动nginx

如果启动不成功,说明80端口被占用,可通过 netstat -ano|findstr ":80" 查看

可通过修改 nginx-1.12.2\conf\nginx.conf 里的默认的端口配置来启动
nginx.conf 中节点作用:
-
worker_processes:工作进程个数,可配置多个
-
worker_connections:单个进程最大连接数
-
server:每一个server相当于一个代理服务器
-
lister:监听端口,默认80
-
server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
-
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
-
index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
-
proxy_pass:请求转向自定义的服务器列表
-
upstream name{ }:服务器集群名称
nginx的三个常用命令:
启动nginx: start nginx 关闭nginx: nginx -s stop 重新加载配置文件: nginx -s reload //可以在不关闭nginx的情况下更新配置文件.
3. nginx负载均衡配置
使用两个tomcat服务器演示(已配置好且都能正常使用),由于两个tomcat版本不一样,可以直接展现,这里就先不添加项目了
配置 nginx-1.12.2\conf\nginx.conf
访问同一网址 http://localhost:80 可发现页面在两个tomcat中来回切换
也可设置权重
注意,每次修改完配置需要重启一下nginx。
4. 超时策略
如果集群中的某个服务器挂了,此时nginx分发请求到该服务器时,如果没有配置超时策略,会出现一段至少1分钟的等待,超过了客户端的响应时间,会造成客户端超时情况,使Nginx报499。
主要介绍如下几个参数:
- proxy_connect_timeout:与服务器连接的超时时间,默认60s
- proxy_timeout:nginx接收后端服务器的响应超时时间,默认值为10min,尽量取默认值
- fail_timeout:当该时间内服务器没响应,则认为服务器失效,默认10s
- max_fails:允许连接失败次数,默认为1
在nginx.conf中的配置:
设置客户端响应时间=proxy_connect_timeout + fail_timeout*max_fails,如我的客户端响应时间设置为3秒,那么超时策略配置如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现