求某个内网 ip 映射到 localhost 的方法

2023-12-08 17:27:29 +08:00
 weishao666

比如: http://10.16.22.23:3001 映射到 http://localhost:3001

迫于屎山代码,代码里边很多地方写死了接口的访问路径,由于某些原因,暂时不便修改。本地开发不方便,总需要新切分支,我能不能找个工具直接代理映射下,nginx 理论上应该不行?我试了改 host 不行

1686 次点击
所在节点    问与答
19 条回复
rwecho
2023-12-08 19:04:46 +08:00
为啥修改 hosts 不行? 为啥 nginx 也不行?感觉你有其他信息
Chad0000
2023-12-08 19:15:20 +08:00
或者可以试试改理由?比如重定向到你的内网 IP 。
bobryjosin
2023-12-08 19:15:20 +08:00
hosts 只能作用域名,你确定目标地址是域名?如果是 ip ,你需要在上级路由器上做 dstnat
danbai
2023-12-08 19:34:53 +08:00
用 gost 做个端口转发就行监听本地 3001 转发到 10.16.22.23:3001
danbai
2023-12-08 19:37:12 +08:00
看反了,可以走代理然后重定向 10.16.22.23 的请求到本地 3001
danbai
2023-12-08 19:38:33 +08:00
ik
2023-12-08 19:54:31 +08:00
gost -L tcp://127.0.0.1:3001/10.16.22.23:3001
falcon05
2023-12-08 20:01:21 +08:00
nginx 可以啊,就是简单的反代。
rrfeng
2023-12-08 20:15:38 +08:00
目标是 IP ?直接把 IP 配到 lo 上呗……
ip add 10.xxx lo

楼上都在绕啥呢…
rrfeng
2023-12-08 20:16:44 +08:00
哦然后还要让你的本地服务端程序监听 0.0.0.0 或者指定这个 IP 。
gamexg
2023-12-08 21:02:13 +08:00
@rrfeng +1
最简单的直接给本机网卡加上 ip 。
Corybyte
2023-12-08 23:26:32 +08:00
用 iptables 把 127.0.0.1 映射目标 ip ?
msg7086
2023-12-09 12:29:38 +08:00
像上面说的,把地址加进 localhost 网卡就行了。
同理如果你想屏蔽软件访问某个 IP ,除了用 iptable 锁以外也可以把 IP 加进 lo 达到类似的目的。
laminux29
2023-12-09 12:57:26 +08:00
nginx 、gost 、socat 这类代理与转发的方法才是正解,因为它实现了访问地址的 IP 、端口号的解耦。

楼上的路由、给网卡添加 IP 的方法,能解决问题,但仍然具有一定程度的耦合,通用性比代理转发方案要差一些。
rrfeng
2023-12-10 12:43:49 +08:00
@laminux29 正解个屁,第一步要拦截发往目标 IP 的请求,nginx 你告诉我怎么做,socat 怎么做?
laminux29
2023-12-10 13:19:09 +08:00
@rrfeng

1.假设楼主的 localhost 在内网的 IP 为 172.16.0.1 。

2.在 10.16.22.23 上面架设 nginx 代理或 socat 代理,代理源地址 10.16.22.23:3001 ,目标地址 172.16.0.1:3001 。

3.nginx 代理的配置,以及 socat 的代理命令行,直接问 GPT 就行了。
rrfeng
2023-12-10 18:12:35 +08:00
@laminux29 他要能控制 10.16.22.23 干嘛还要劫持回本机??
或者 10.16.22.23 是生产服务器,你把生产干了转发到你本地??
laminux29
2023-12-11 00:44:16 +08:00
@rrfeng

我之前也有这个疑问,我是再三确认了楼主的需求,他的意思是不方便修改程序里的硬编码的访问路径,而并不是说不方便控制 10.16.22.23 。

我猜测,有可能是他的同事水平菜,硬编码了访问接口 IP ,他又不想求同事改成配置文件,但他又要去测试,所以就遇到了这个问题。
rrfeng
2023-12-11 04:35:57 +08:00
@laminux29 👍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/998764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX