考虑以下 PAC 文件:
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, "intranet.domain.com"))
return "DIRECT";
if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
return "PROXY 1.2.3.4:8080";
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}
有没有办法将这些设置转移到$http_proxy
环境$no_proxy
变量中?
答案1
no_proxy
可以设置为类似的值no_proxy="intranet.domain.com,*.local,..."
,但否则环境变量是每个进程的字符串,因此无法[†]a)表达任何内容的逻辑isInNet
或b)更新具有一些旧的且现在无效的字符串集的现有进程的环境。除非您杀死所有进程,否则http_proxy
根据isInNet
所做的任何操作设置一个新进程,然后重新启动所有进程,以便它们从父进程fork
收到新进程的新副本。http_proxy
如果所有进程都在您的控制之下,您可以编写一个 API 来调整环境变量。如果您遇到fork
一些不受您控制的事情(因为该过程中可能很快就会设置一些错误的字符串),这将会失败,并且与仅使用现有业务逻辑相比,这可能会不必要地复杂。
[†] 好吧,有gdb
猴子修补记忆,所以没有简单或不疯狂的方法