由于在iPad上我们无法编辑主机文件(不越狱),我们如何将网络流量任意重定向到另一个URL?
这对于某些事情(例如,开发使用虚拟主机配置的网站,在其中您要重定向到开发计算机)非常重要。
(这与以下问题有关:我可以编辑iPad的主机文件吗?)
由于在iPad上我们无法编辑主机文件(不越狱),我们如何将网络流量任意重定向到另一个URL?
这对于某些事情(例如,开发使用虚拟主机配置的网站,在其中您要重定向到开发计算机)非常重要。
(这与以下问题有关:我可以编辑iPad的主机文件吗?)
Answers:
克服iPad局限性的方法是使用HTTP代理服务器,例如在另一台可以在其上编辑主机文件的计算机上运行的Squid。
在iPad上的“设置”->“网络”->“ Wi-Fi”->(您的网络)下,有一个HTTP代理设置,可以将其设置为“手动”。在此处输入代理信息。
一旦设置完成,您就可以像更改主机文件一样操作iPad。
yum install squid
在浅
apt-get install squid
在Ubuntu上
sudo service squid3 reload
。另外-也许这是我的开发服务器特有的配置问题-在我的iPad上,我必须手动输入http://才能使地址解析正常工作。
我发现您只需要修改 iPad中的Wifi设置即可将开发机器的IP地址用作HTTP代理(如上述文章所述):
这样,通过输入虚拟主机的URL(例如local.mywebapp.com
)就可以访问iPad上的Web应用程序。它既简单又快捷,但是与Will Koehler的解决方案不同,您将无法从iPad访问Internet。但是在大多数情况下,这并不是真正的问题,因为您只想测试自己的应用程序。
80
。
在运行代理服务器(例如Fiddler或Charles)的计算机上设置主机文件,并配置iPad以将该计算机用作HTTP代理。
以下是有关如何使用Fiddler进行操作的说明:http : //conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html
这是给查尔斯的:http : //www.ravelrumba.com/blog/ipad-http-debugging/
如果您已经拥有要进行开发的Apache服务器,则可以轻松地将其用作正向代理。这对于真正喜欢使用完整绝对URL的WordPress网站特别有用。
下面的Ubuntu示例:
第一步是/etc/hosts
在开发服务器中编辑文件。添加服务器的本地IP,指向您的站点。
127.0.0.1 dev.mysite.com
当您尝试解析来自iPhone / iPad的请求时,Apache代理将使用此主机文件。现在让我们设置Apache部分...
您可能需要先安装一些模块。
sudo apt-get install libapache2-mod-proxy-html
sudo a2enmod proxy proxy_http proxy_html
sudo apache2ctl graceful
然后创建一个虚拟主机文件,例如 /etc/apache2/sites-available/my-proxy
Listen *:8080
<VirtualHost *:8080>
ProxyRequests On
<Proxy *>
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
</Proxy>
</VirtualHost>
启用虚拟主机,然后重新启动Apache:
sudo a2ensite my-proxy
sudo apache2ctl graceful
然后转到设置> Wi-Fi>您的网络并配置“手动”代理。输入您的Apache服务器的IP和端口。而已!
该<Proxy *>
阻止确保仅本地网络上的人员可以使用此代理。如果您使用转发代理,则严格限制访问权限至关重要。该ip2cidr页面将在这一点很有帮助。(作为额外的措施,:8080端口被我的防火墙阻止了。)
我需要测试我在iPad上开发的Web应用程序。我在开发机上使用Apache来运行Web应用程序,因此我发现最简单的解决方案是使用Apache mod_proxy。
我的开发机在我的家庭网络中显示为sapphire.local。
我正在测试的Web应用程序托管在dev.cms.dev的开发机上(我正在使用POW)。
要设置代理,我将以下部分添加到httpd.conf中。
<VirtualHost *:80>
ServerName sapphire.local
ProxyPass / http://demo.cms.dev/
ProxyPassReverse / http://demo.cms.dev/
ProxyPassReverseCookieDomain .cms.dev .sapphire.local
ProxyPreserveHost Off
</VirtualHost>
这会将sapphire.local上的传入请求路由到demo.cms.dev。该方法一次仅适用于一个应用程序。我认为您可以使用其他端口来设置其他应用。也许有人有更好的解决方案?
也可以使用Weblock-AdBlock for iOS应用(可在此处以1.99美元购买:https ://itunes.apple.com/us/app/weblock/id558818638?mt =8)创建网络流量重定向。
这样,您就可以将符合特定规则的所有流量重定向到指定的IP地址。这将模拟在iOS设备上的/ etc / hosts中添加条目。如果请求中设置的主机名是由您将流量定向到的IP处理的,则可以使用它来测试专用API,甚至可以嗅探从其他应用程序或网站发送的流量。不幸的是,这仅适用于http / https连接。
所有这些只能在Wi-Fi上完成(Weblock的限制之一)。主要优点是您可以轻松地从iOS设备配置所有内容,而无需搞砸DNS /代理服务器配置。
这是一个例子:
macbook-pro-tk:〜kpr $ nc -l -v -v 1234 GET http://www.google.com/ HTTP / 1.1 主持人:www.google.com 接受:text / html,application / xhtml + xml,application / xml; q = 0.9,* / *; q = 0.8 代理连接:保持活动状态 PREF = ID = 7722bc3c844a7c26:TM = 1402073839:LM = 1402073839:S = 5bSJJsM2p0HgUP7L 用户代理:Mozilla / 5.0(iPhone; CPU iPhone OS 7_1_1,如Mac OS X)AppleWebKit / 537.51.2(KHTML,如Gecko)版本/7.0 Mobile / 11D201 Safari / 9537.53 接受语言:en-us 接受编码:gzip,放气 连接:保持活动状态
Weblock还可以很好地使用正则表达式选择性地重定向某些URL。您可以将查询仅重定向到特定端点,而所有其他查询都使用从DNS返回的IP。实际上,这允许/ etc / hosts进行更合适的配置。
示例:如果我为htt *://somedomain.com/api/login*和某些IP和端口创建URL重定向规则,则我将仅看到此IP和端口上来自此URL的流量,而所有其他流量都到达somedomain。 com将直接转到DNS返回的IP。请注意,由于规则末尾的通配符*,它对/ api / login和/ api / login?someparam = somevalue都适用。
我在Mac上使用squidman做到了。易于设置和使用。
我按照这篇文章在5分钟内完成了设置。
更新资料
另一件事是,如果您要连接到代理服务器上运行的网站,在我的情况下是我的Mac,则需要在squidman-> Preferences-> Template中将此行注释掉
# protect web apps running on the proxy host from external users
# http_access deny to_localhost
您也可以按照该页面上的说明使用http://xip.io/,您可以输入IP地址,它将重定向到相关的本地IP。
这是用于Mamp Pro虚拟主机的跨设备/计算机测试的无配置方法。唯一的限制是您一次只能测试一个域,但是对我来说,这在我开发时很好。但是,直接在Mamp中直接在虚拟主机之间进行更改非常简单。
我正在运行mamp pro 2,山狮。我的网站文件夹包含单个域文件夹。
我发现如果您在虚拟主机“ ip / port”下选择本地计算机的特定ip并重新启动mamp,则在通过网络查看本地计算机的ip地址或计算机名称时,该域将成为默认域。
出于测试目的,此方法在网络上的所有设备(包括iPad)上都可以正常运行。如果要测试另一个虚拟主机,则只需将ip / port配置返回“ *”,然后将另一个域重新分配给计算机的ip地址并重新启动。
这种简单方法的优点是,当您在同一网络上时,您可以直接访问开发站点的客户端,而无需在其计算机上进行任何配置。
希望这对其他寻求简单解决方案的人有所帮助。
内部DNS服务器是一种选择,但实施起来非常麻烦。我们尝试将鱿鱼安装为代理服务器,但由于将URL重定向到新服务器,并且在浏览器URL上也可以看到,因此也没有用。
最终对我们有用的是在其中一台服务器上安装Fiddler,并将该服务器用作ipad上的代理服务器。Fiddler还具有将子域映射到IP地址的功能,即类似于/ etc / hosts的功能。
不错的教学指南:http : //egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/
另一种方法是通过本地热点将IPad与我的MAC OS X连接,并建立端口转发到开发VM。为此,我完成了以下步骤:
ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
<IP-of-hotspot-host>:<source-port>
创建热点后,
MAC OS X系统设置>>网络>> WLAN 中将存在一个WLAN-Point。
在/etc/apache2/sites-available/dkr.dev.local中的开发VM(Apache2)上, 我必须添加以下内容:
<VirtualHost *:80> ... ServerAlias <热点主机IP> ... </ VirtualHost>
如果您一直在探索这个问题,并且找到了一些外部链接,则可能会找到以下答案:
https://stackoverflow.com/a/24770097/3842985
它是关于一个名为dnsmasq的轻量级DNS服务器。超级简单,功能非常强大,可以与内部或外部DNS服务器结合使用。
这比安装鱿鱼,摆弄Apache和其他耗时的技术要容易得多,这些技术非常耗时,并且冒着配置,开发环境,测试环境等“完整性”的风险。
很值得考虑。
我将其用作开发和正常联网的常规工具。
在PC上使用自定义DNS服务器可以解决此问题。我正在使用并且工作正常。
检查https://technitium.com/dns/以下载自定义DNS服务器。使用.Net技术构建的。配置此工具后,您需要将DNS设置更改为“ custom”并设置PC的IP。为避免每次重新启动PC时都更改IP,请在PC上使用静态IP。