当前位置:首页 > 每日看点

Nginx 能做什么好玩的事情?

卡卷网2年前 (2024-11-30)每日看点344

nginx用途非常多,但一般都是用在HTTP上,今天,笔者又发现了一个新用法。

背景

最近,需要和三方进行对接,接口需要联调,因为双方的服务,都在自己的公司内网,而且两个公司的内网都不能进行互联网访问,开始开发的时候,笔者使用接口模拟的方式,直接绕过了请求的访问,系统逻辑跑通了,但一直没有对接口进行访问,还是有点心慌慌。

于是想到了nginx既然能作为一个静态服务器,那么,也应该可以访问到本地的json文件(对接格式使用的json格式),于是,笔者找到三方的研发人员,让对方每个请求都用postman来请求了一遍,把每个请求的返回数据给保存了下来。

先说坑

想到了解决方案,当然心情非常舒畅,于是,修改配置文件,先来测试一个简单的json吧。于是,手写了一个index.json,就返回了{"key":"value"}的数据,嗯。请求路径是对方写死了的,还需要模拟一个请求URL,于是,下面的配置文件出来了。

location /abcd/efg/ab { alias /home/source/; index index.json; default_type application/json; }

把index.json文件放到目录下,使用url进行请求,返回404,嗯?错误了?不应该啊?查看错误日志。

如图:

Nginx 能做什么好玩的事情?  第1张

再查,再改,一直报这个错误,为什么有这个问题啊,不应该啊,这个目录是错误的啊,我明明配置了对应的目录了啊。找不到这个文件?why。

此处省略半小时的重复验证,试错。还是不行。有点没头绪。嗯。不用目录了,我直接走代理看一下,于是,我把配置修改成了

location /abcd/efg/ab { proxy_pass http://127.0.0.1/json/index.json; }

再来访问,好像也不行?嗯????有点怀疑人生了。

嗯。站起来走走,哦。好像想起来了,下午的时候,因为部署测试的事情,在本机上用命令行启动了一次nginx,下班的时候,直接把窗口关掉就走了。于是,把当前进程给关闭,使用了nginx -s stop,刚刚启动的nginx关掉了,检查进程中的数据,嗯。还在,确实是这个问题,原有的进程没有关闭,一直在接收请求。

Nginx 能做什么好玩的事情?  第2张

也许有人会问,从笔者的截图中,可以看到有nginx -s reload 成功的信息啊。这个地方要说明下,-s 的命令,查找的进程,都是 log目录下的nginx.pid文件中的进程ID,因为下班后,又启动了一次nginx,所以,把原有的nginx.pid给覆盖掉了,导致nginx -s 的命令,并不能重新加载原来的进程了。

Nginx 能做什么好玩的事情?  第3张


还有一点点疑问,就是,因为端口被占用了,此时,nginx应该启动不起来才是,但第二个进程还是正常启动了。这个是点小疑问,笔者后续再来排查。

我们言归正传,再来说回这次想要解决的方案。

配置

嗯。既然已经配置成代理了的方式了,那就用这种方式吧。于是,配置如下:

location /a/test1 { proxy_pass http://127.0.0.1/json/test1.json; } location /a/test2 { proxy_pass http://127.0.0.1/test2.json; } location /json/ { alias /home/soft/; default_type application/json; }

再次来访问,curl http://127.0.0.1/a/test1 ,嗯。能正常返回json的数据了。

(PS:补充一点问题,在浏览器上以及curl使用的都是get请求,所以,nginx没问题,但如果使用了post方法,就会出现405请求,则,可以在json配置的地方,增加一行配置 error_page 405 =200 $uri ; 则可解决这个问题。)

总结

配置nginx来访问json数据,这个方案并不是多大的难题,但在配置过程中,由于笔者自己的粗心,导致了本次故障的多次排查和配置文件的修改不生效问题,才是本次处理解决方案最大的收获。

增加:有朋友说,可以用whistle应用来拦截请求,返回数据,因为笔者使用nginx较多,且对nginx熟悉一些。所以,采用了nginx来直接返回请求数据的方案。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/2247.html

分享给朋友:

相关文章

内存和硬盘的单位都是G,两者的功能是什么?谁能用简单通俗的方式来解读一下?

内存和硬盘的单位都是G,两者的功能是什么?谁能用简单通俗的方式来解读一下?

要弄清楚这个问题,首先要弄清楚什么是内存,什么是硬盘,在计算机的组成结构中有一个很重要的部分是存储器。它是用来存储程序和数据的部件。对于计算机来说,有了存储器,才有记忆功能,,才能保证正常工作。存储器的种类很多。按其用途可分为主存储器与辅助…

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

最近一个月各大手机厂商的旗舰机扎堆发布,不知道大家看爽了没? 这一代的性能续航大提升,最低 3599 元就能买到,同时老款也有不小的降幅,今年双 11 算是相当适合换手机的节点了! 这次,小黑就给大家推荐双 11 期间值得购买的手机...…

台积电通知其中国客户,从下周开始,所有 7nm 及以下芯片出货将停止。如何看待这一行为?

台积电通知其中国客户,从下周开始,所有 7nm 及以下芯片出货将停止。如何看待这一行为?

我说美国快要没招了,你信么? 这次台积电宣布停止向中国大陆客户供应7纳米及更先进AI芯片,再加上前段时间台积电对华为的制裁,我们基本可以认为,台积电在高端芯片领域,已经彻底把大陆给拉黑了,这也意味着中美芯片战已经到了最关键的时刻,一旦我们克…

抖音上有一些账号搬运别人的视频,几乎一模一样,也没判搬运,他们是怎么做到的??

对于任何短视频平台来说,如何用最低的成本快速实现伪原创搬运都是需要解决的问题。 所有的短视频平台,包括抖音、快手、tiktok、视频号、小红书、B站,甚至是FB、推特、INS、YouTube,它们的查重技术都是类似的,只要你在网络环境设置得…

程序员都有自己的服务器吗?

程序员都有自己的服务器吗?

2024.9. 24,有朋友咨询功耗,我没有单独给服务器弄智能插座,系统做的 esxi 也看不到,所以只能用其他角度判断供大家参考。 我有一个餐边柜改的机柜,里面白裙两盘,黑群晖 4 机械 1 mvme,一个爱快硬路由,一个联通光猫,一个…

在 Kubernetes 中,Service 的实现原理是什么,它是如何实现服务发现的?

行,问的这个问题挺有意思,Kubernetes 里 Service 是怎么实现的,服务发现是怎么回事,咱就直说了。这事儿看起来挺玄乎,但掰开揉碎了讲,也就那么回事。你得把这事儿想得简单点,别一上来就被啥术语吓住了——其实全是些搬砖的套路。…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。