PHP 是否能够实现将 http 请求转发到一个域名的指定 IP 下?

2017-07-10 16:16:06 +08:00
 xxxpara

php 是否能够实现将 http 请求转发到一个域名的指定 IP 下?比如 www.a.com 这个域名有多台服务器,IP 有 4 个,正常情况是随机的,如果我想在 PHP 层把访问的 IP 写死,有可能实现吗?

我知道改 hosts 可以实现,现在是想尝试直接在代码层面实现,不知道有没有可能性

8958 次点击
所在节点    PHP
40 条回复
jhdxr
2017-07-10 16:24:47 +08:00
为什么我觉得最近 PHP 话题下的帖子质量急剧下降,是有培训班老师把 V2EX 介绍出去了么。。。

系统告诉我『请尽量让自己的回复能够对别人有帮助』,但这帖子我实在没读懂。什么叫把请求转发到一个指定的 IP 下?是用户访问 http://www.a.com ,然后请求到了你的机器上,你想把这个请求转发到别的固定的某一台处理 http://www.a.com 的机器上?还是转发到另外一个域名 http://www.b.com 的机器上?
mscb
2017-07-10 16:26:10 +08:00
可以是可以,但是如果能直接在 nginx 下配置一下,会不会更方便一点,省得开发?
alex321
2017-07-10 16:30:44 +08:00
都用了域名 IP 轮询了,何苦再回去呢;回退到低阶状态别轮询啊。
xxxpara
2017-07-10 16:32:10 +08:00
@mscb 可以指导一下具体方案?没怎么写过 PHP
xxxpara
2017-07-10 16:34:17 +08:00
@jhdxr 可能我表述不太清楚,我得意思是像修改电脑本地的 hosts 一样,通过 PHP 把域名的请求转发到 127.0.0.1 这个本地环境下,或者其他测试 IP
xxxpara
2017-07-10 16:35:09 +08:00
@alex321 是因为想能够实现访问指定的开发 /测试环境
maojy1989
2017-07-10 16:37:25 +08:00
在你跑 php 程序的机器上把 hosts 改了即可
mscb
2017-07-10 16:38:10 +08:00
@xxxpara 这个和 php 没什么关系,给你个关键词吧,我看不太懂你的具体需求。“ nginx 负载均衡" "nginx 配置文档“ 你去搜索一下看看,应该就懂了
anyele
2017-07-10 16:40:59 +08:00
培训班老师把 V2EX 介绍出去了。。。。。。
xxxpara
2017-07-10 16:43:38 +08:00
@mscb 这个 Nginx 配置我知道肯定是可行的,现在是想再不修改 Nginx 配置的前提下,用代码有可能做到吗
xxxpara
2017-07-10 16:43:59 +08:00
@maojy1989 现在是想再不修改 Nginx 配置的前提下,用代码有可能做到吗
g8287694
2017-07-10 16:44:50 +08:00
@xxxpara 这么做意义何在?
ysjdx
2017-07-10 16:47:49 +08:00
curl 请求 ip header 里面加 Host:参数
xxxpara
2017-07-10 16:48:21 +08:00
@g8287694 客户想访问我们某个测试环境,我们不可能每个客户都去给他手动改配置
所以在想能不能通过在请求中加一个参数让他们自己加上可以访问指定的环境
vus520
2017-07-10 16:56:07 +08:00
两个方法:
1,直接用 curl,走代理模式,将 Host 请求直接指定到对应 IP
```
curl baidu.com -x "127.0.0.1:80"
``
2,PHP 的 CURL 库好像支持代理,可以直接用,如果不行,可以用 socket 打开对应 IP 的 80 端口,然后发送头信息"Host: baidu.com"


下一题。
mscb
2017-07-10 16:58:02 +08:00
@xxxpara 在 php 程序开头,先判断一下当前服务器 ip,如果不是目标 ip,就用 socket 模拟 http 访问目标 ip 的服务器。
不过这样做没啥意义啊?拖慢了访问速度。而且你同一个域名访问的内容不应该是一样的吗?
rootx
2017-07-10 17:00:08 +08:00
应该 nginx 层做的事情 不要在 PHP 层做 会影响性能的…当然如果不考虑性能就不谈了…
xxxpara
2017-07-10 17:03:29 +08:00
@mscb 这个不是部署到正式环境的,仅仅是提供给客户体验某个环境下的业务代码
xxxpara
2017-07-10 17:03:39 +08:00
@rootx 这个不是部署到正式环境的,仅仅是提供给客户体验某个环境下的业务代码
GreatHumorist
2017-07-10 17:11:24 +08:00
可以用 dns 解析进行负载均衡也可以用 nginx 进行负载均衡,用 php 本身的话效率不能保证,而且不科学。

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

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

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

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

© 2021 V2EX