当前位置:首页 > 域名知识 > 正文内容

nginx域名转发 nginx根据域名转发

8678008682年前 (2024-03-27)域名知识

大家好,今天来为大家解答nginx域名转发这个问题的一些问题点,包括nginx根据域名转发也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

nginx域名转发 nginx根据域名转发Nginx转发+反向代理实现跨域接口转发

最近工作遇上业务交接不彻底还有一些乱七八糟原因,导致我需要将几个接口的请求转发到新团队负责的域名下。

参考文档:

https://blog.csdn.net/yeguxin/article/details/94020476

nginx域名转发 nginx根据域名转发

https://liguangming.com/nginx-return-tips

https://segmentfault.com/a/1190000018163817

主要是为了记录自己工作中解决的一些问题,所以笔记就简单一些,涉及到工作的一些具体数据就不记录了

nginx域名转发 nginx根据域名转发

原域名:soa.api.local

目标域名:newsoa.api.local

方法名:functionName

第一版:

出于偷懒的方式,直接选择return进行跳转

结果通过Http请求返回的是字符串

"http://newsoa.api.local/functionName?body={"id":770080,"bid":9}¶m1=param1¶m2=param2"

第二版:

使用rewrite进行重定向

但是有点问题,在浏览器中可以看到跳转到新的域名了,但是打开开发者工具会看到有两次请求,第一次是对原域名soa.api.local的请求,返回的HttpCode为302。第二次请求为重定向后的请求。

所以如果客户端跟踪重定向,那根本就获取不到第二次请求的数据。

第三版

使用rewrite和反向代理实现

终于达到我要的效果了,客户端能保持当前链接不变的情况下获取到重定向后的数据。

nginx根据域名转发

如今docker使得本地部署服务越来越容易了,例如本人就使用了docker部署了gitlab-ce服务。但是对局域网的其他用户希望是通过gitlab.nathan.com进行访问,这就意味着gitlab服务需要部署在80端口上。但是其他服务也需要这样,即也需要80端口。多个服务不可能同时暂用同一个端口,但是可以通过nginx转发。比如A服务是7080端口,对应的域名是a.center.com;B服务对应的端口是6080端口,域名是b.center.com。nginx更具域名进行转发到不同端口上。

ngxin配置:

备注:现在很多路由器都支持修改hosts,比如小米路由器、华硕<梅林>路由器等。

nginx只用一个公网端口转发多个内网服务

  一个常见的问题,生产环境的一台有公网ip的服务器,为了安全起见,运维只给开一个端口,于是考虑用nginx根据url的前缀路径来转发到不同服务。例如:

以springboot工程为例,我们自己的web服务一般都会通过设置

来给该服务的所有url设置一个统一的前缀路径/xxxxxx。这时候nginx就可以将所有带有前缀/xxxxxx的请求转发到该服务。这是一个很简单的事。

  问题是有很多第三方服务,例如kafka manager,他是没有这样的前缀的,假设kafka安装在 192.168.0.182机器上,kafka manager的访问地址就是 http://192.168.0.182:3000,我们当然可以在首次访问时通过地址 http://192.168.0.182:3000/kafka让nginx根据/kafka识别到这是kafka manager服务并转发到 http://192.168.0.182:3000,但是我们打开kafka manager页面上的链接时是不会有我们自己添加的/kafka前缀的,上面的方法失效。

  我们都知道http服务是无状态的,就像上面所说即使访问了kafka manager的主页,点击主页上按钮发起的请求也无法被识别为kafka manager请求。但是web服务绝大多是都是需要有状态的,主要有session/cookie、token两种方式来解决这个问题。也可以用来解决上面的问题。

在nginx中配置:

  这时候又有一个问题,使用同样的ip:port来访问这些服务,在浏览器看来所有的服务都是一个域的,他们的cookie就会是同一个cookie,这时候nginx没办法根据cookie的不同转发到不同的服务。

  我们想到了给每个服务配置一个域名(没有那么多公网域名可用,就在本地hosts文件配置了),产生跨域的效果,让不同的服务有独立的cookie。

  从来都是解决跨域问题,从没想过有一天要主动跨域

  如果配置了域名,完全可以让nginx根据域名来做识别转发,为什么要用cookie呢?如果你都是配置了公网域名,那确实可以这么干,但是我们是改的hosts文件,保不齐谁的域名就写错了,或者因为只是本地hosts文件的修改根本就没必要统一域名,这时候根据域名做转发就不行了。

  kafka manager的访问是不需要认证的,暴露在公网上、面向所有人是一件可怕的事,我们是设置了VPN和访问白名单。

nginx动态域名解析

原文链接:

https://priesttomb.github.io/%E6%8A%80%E6%9C%AF/2020/05/17/nginx-cached-dns-server-resolvered-answer/

接上篇文章中提到的 Nginx解析域名地址的问题,用一句话描述就是“proxy_pass中如果配置的是域名地址,Nginx只有在 start/ restart/ reload时,才会连接一次域名服务器解析域名,缓存解析的结果,后续则不会根据解析结果的 TTL进行自动更新”,如果遇到了域名地址配置有多个 IP,且还在动态变化,那就会出现 Nginx把请求转发到一个过期的 IP地址的情况,连接超时的报错日志类似这样:

这个说法在官方的一篇 2016年的博客中有提到:

除此之外,除了一些分析源码的网络文章,暂时还没有找到其他的官方文档中说到这个细节

在 upstream中可以对上游的服务器进行更详细的设置,解决 DNS缓存的问题可以在 upstream中指定需要的负载均衡算法,比如 least_conn,并指定 max_fails,以实现调用失败 N次之后判定该服务异常,暂停转发该服务

注:

这个配置的示例是官方博客中的,看到这个配置时觉得有点奇怪,自己进行了模拟测试,测试的方案是在 hosts文件中配置一个模拟的域名与三个 IP地址,其中两个 IP是正确的,另一个是内网不存在的 IP,测试的结果就是 Nginx始终会将请求转发到那个错误的 IP去,日志中一直能看到超时的报错,配置的 max_fails仿佛没有任何作用(有补充配置了 fail_timeout,也尝试配置了 proxy_next_upstream、 proxy_next_upstream_timeout和 proxy_next_upstream_tries)

不清楚用 hosts配置的方式是不是必然会出现这样的情况,因为目前没条件测试真正想要的场景,所以不敢说博客中的这种配置是错的【如果以后碰巧有条件能测试验证,再回头来更新

最初学习 Nginx的时候测试过 max_fails这个配置,当时在 upstream里配置的都是一些 IP地址的上游服务。再次按 IP地址进行测试,在 upstream中配置两个正确的 IP地址和一个错误的 IP地址,发现这样的配置就是能生效的,失败一定次数之后(实际失败的次数比设置的 max_fails多,不清楚什么原因),Nginx在 fail_timeout时间内就不再转发请求到那个错误的 IP

resolver的配置详情可看官方文档,示例的配置是指定 DNS服务器 10.0.0.2,指定 DNS解析的有效时间为 10秒,按博客《Nginx动态解析upstream域名》中博主的测试,不是说 Nginx每过 10秒会自己重新调一次 DNS解析,而是有请求转发时才检验一次有效期是否过期

不配置 valid选项时,V1.1.9之后的 Nginx默认会使用 DNS解析结果中的 TTL

在 proxy_pass中使用变量,带来的作用就是在 TTL过期时能再次调用 DNS解析,从而解决一直使用缓存结果的问题

这大概是目前官方原版唯一解决 DNS缓存的解决方案了,带来的弊端也如《Nginx动态解析upstream域名》的博主所说,不能使用 upstream模块特有的相关配置

Nginx Plus版有更好的配置解决这些问题,另外使用 Lua插件或许也能更完美的解决这个问题,暂时就没什么研究了

文章分享结束,nginx域名转发和nginx根据域名转发的答案你都知道了吗?欢迎再次光临本站哦!

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

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

本文链接:https://www.aiming.cc/index.php/post/1777.html

分享给朋友:

“nginx域名转发 nginx根据域名转发” 的相关文章

域名中介 常见的域名中介骗局有哪些

域名中介 常见的域名中介骗局有哪些

尊敬的读者,域名中介和常见的域名中介骗局有哪些是当前备受关注的话题,但许多人对其仍存在疑惑。在本篇文章中,我将为你提供清晰的解释和深入的分析,希望能满足你的求知欲望。网站怎么买域名第一步:在百度中搜“中国万网官网“,所图所示: 第二步:找到”中国万网官网“,并打开。如图所示:...

免费二级域名注册 免费二级域名注册网站有哪些

免费二级域名注册 免费二级域名注册网站有哪些

大家好,如果您还对免费二级域名注册不太了解,没有关系,今天就由本站为大家分享免费二级域名注册的知识,包括免费二级域名注册网站有哪些的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!如何免费申请二级域名工具/原料 TK网站、花生壳动态域名6.0正式版 步骤/方...

免费备案?免费的二级域名备案

免费备案?免费的二级域名备案

你是否对于免费备案和免费的二级域名备案感到困惑?别担心,今天小编将为您揭开这个谜团,让我们一同探索吧!个人域名能备案吗问题一:个人怎样注册域名,个人注册需要备案吗?首先要知道你是要注册什么域名,一般个人不允许注册域名,其他域名就没有限制。如果你用国内空间就要备案,国外空间就不用备案。最快捷...

域名估价 域名买卖网怎么评估域名价值

域名估价 域名买卖网怎么评估域名价值

大家好,今天小编来为大家解答域名估价这个问题,域名买卖网怎么评估域名价值很多人还不知道,现在让我们一起来看看吧!域名怎么评估价钱域名的价值是一个很抽象的概念,为了正确评估客户的域名价值,我们借鉴国际 上的做法,并结合中国的国情提出以下评估模式: 域名的价值可以由以下几个方面...

如何注册域名,个人如何注册域名

如何注册域名,个人如何注册域名

大家好,今天小编来为大家解答如何注册域名这个问题,个人如何注册域名很多人还不知道,现在让我们一起来看看吧!域名如何注册1、寻找合适的域名注册商。 合适的域名注册商在怎么自己注册域名中是十分重要的一步。不同域名属于不同的注册管理机构进行管理的,因此注册不同的域名是要从注册管理机构那里...

企业备案域名出售?已备案的域名如何出售转让

企业备案域名出售?已备案的域名如何出售转让

其实企业备案域名出售的问题并不复杂,但是又很多的朋友都不太了解已备案的域名如何出售转让,因此呢,今天小编就来为大家分享企业备案域名出售的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!网站域名备案要怎么修改成企业备案以阿里云为例:域名和主办者证件已经在阿里云取得备案号,修...