Windows服务器设置Nginx实现分布式服务

1.安装Nginx

下载Nginx-1.16.1版本。解压到如下目录:

设置环境变量:

检查版本:

启动nginx.exe,出现黑框一闪而过,进程中出现如下情况代表启动成功:

2.搭建模拟HTTP服务

下载wiremock-standalone-2.25.1.jar,可以使用Maven配置pom.xml下载。注意下载standalone版本。新建ServerA、ServerB两个目录,分别拷贝jar,新建启动脚本run.bat

run.bat内容:

两个实例分别使用17777、18888

XML 复制代码
java -jar wiremock-standalone-2.25.1.jar --port 17777
popd
pause
XML 复制代码
java -jar wiremock-standalone-2.25.1.jar --port 18888
popd
pause

启动后效果如下:

3.配置Nginx

配置nginx.conf 文件

**listen:**Nginx的监听端口,可以自定义

**server_name:**代理服务所在服务器的域名或IP

proxy_pass: 指定了代理转发的目标地址,这里使用了一个名为 backend_servers 的上游服务,后面还将进行详细设置。

proxy_set_header: 是 Nginx 配置项中的一个指令,用于设置向上游代理服务器发送的 HTTP 请求头。当 Nginx 作为反向代理服务器转发请求到后端服务器时,它会将客户端发送的请求头信息一并转发给后端服务器。而使用 proxy_set_header 指令可以在转发请求之前修改或添加新的请求头。

proxy_set_header Host $host; 的作用是在 Nginx 转发请求到后端服务器时,将客户端请求的原始主机名(即域名)添加到转发的请求头中的 Host 字段。

这个配置项非常重要,因为在进行反向代理时,后端服务器可能会使用请求头中的 Host 字段来判断请求的目标地址。例如,当客户端访问 http://your_domain.com/path,Nginx 会将该请求转发给后端服务器。如果没有设置 proxy_set_header Host $host;,那么在转发的请求头中的 Host 字段可能会被设置为 Nginx 的 IP 地址或其它默认值,而不是客户端实际请求的域名。

通过将 proxy_set_header Host $host; 添加到 Nginx 配置中,Nginx 会将客户端请求中的原始主机名(即域名)复制到转发的请求头的 Host 字段中。这样,后端服务器就能够正确地识别请求的目标地址,并进行相应的处理。

配置backend_servers

upstream和server位于同一级目录

server 127.0.0.1:17777;

server 127.0.0.1:18888;

为两个ServerA、ServerB服务所在主机IP地址和端口。

4.测试效果

打开ServerA、ServerB:

打开PostMan:

设置Nginx的IP和端口的URL,使用Send测试:

17777端口的服务收到了请求:

再次点击Send:这次18888服务收到了请求

相关推荐
wanhengidc6 分钟前
服务器租用有何优点
运维·服务器·安全·web安全
ZGi.ai26 分钟前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
坤昱40 分钟前
cfs调度类深入解刨——最新内核细节分析2
linux·服务器·cfs·cfs调度·eevdf调度·eevdf·kernel 7.1
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约1 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
wkd_0071 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
企服AI产品测评局1 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化
mixboot2 小时前
Linux 进程工作目录查看利器:pwdx 命令详解
linux·运维·服务器
盖小雅3 小时前
自动化排班如何破解劳动法合规难题:从规则冲突到可追溯的排班表
大数据·运维·机器学习·自动化
NiceCloud喜云3 小时前
Claude Code Routines 实战:三种触发器跑通云端自动化编码
android·运维·数据库·人工智能·自动化·json·飞书