详解使用ChatGPT解决Nginx反向代理的问题

背景

我有 3 台服务器,1台Web服务器对外提供访问,另外两台服务器 QC1 和 QC2 用于存储不同设备识别后保存的照片。它们的 IP 地址如下:

服务器名称IP地址
Web服务器10.76.2.10
QC1192.168.100.1
QC2192.168.100.2

前端程序需要根据照片的文件名称把图片显示出来,最开始想到的就是通过 Nginx 进行反向代理来解决这个问题。

举个例子,照片文件名称是 QC1 开头的,那么就是从 192.168.100.1 服务器上取照片,用户访问 http://10.76.2.10:8029/media/QC1_20220318T131856_1_CT.jpg,实际上访问的是 http://192.168.100.1/media/QC1_20220318T131856_1_CT.jpg

但是由于本人对 Nginx 配置不是很熟悉,刚好最近 ChatGPT 大红大紫,于是萌生了询问 ChatGPT 来解决这个问题的想法,于是就产生了下面我和 ChatGPT 的对话。

使用ChatGPT解决

我向 ChatGPT 说明了我要咨询关于 Nginx 反向代理的问题,并简单介绍了背景。ChatGPT 很快就理解了我的问题,并提供了如下的 Nginx 配置

接着 ChatGPT 就给出了 nginx 的配置

如果访问的地址变了,它又会重新修改配置。

我对它写的 if 语句不清楚是用来做什么的,它也能给出相应的解释。

这个时候我大概明白了,只要我们拿到 $1 变量,就可以实现根据照片的文件名来反向代理服务器的请求。但是之前它提供的 upstream 配置中并没有QC1和QC2对应的地址,还是继续让 ChatGPT 修改。

调整好后,让 ChatGPT 重新生成一个完整的 nginx 配置。

好了,我们把这个配置复制到服务器上,再稍微修改调整一些,重新启动了 Nginx,并使用浏览器测试了一下。

下面是QC1和QC2服务器上面的两张照片

我们通过 http://localhost:8029 (web服务器)分别去访问这两张照片,一切都运行正常,根据照片的文件名,Nginx 正确地将请求转发到了对应的服务器,照片也能够正确地显示出来,🎉🎉🎉!

总结

在本文中,我们不仅通过与 ChatGPT 对话来解决了 Nginx 反向代理的问题,并且还能在这个过程中学习到了使用 if 指令来控制请求,学习到新的知识点。

然而,我们也需要注意到一个问题,一开始它并没有正确的给出正确的 Nginx 配置,需要在使用 ChatGPT 的过程中进行反复验证和调整,以确保得到正确的答案,有时可能需要与我们自己的知识和经验相结合,以获得最佳的解决方案。

如果我们降低对 ChatGPT 的期望将其作为工具来使用,而不是完全相信它,ChatGPT 也是一个不错的小助手。

作者:水果芋头

%s 个评论

要回复文章请先登录注册