我想充当我的应用程序中某些请求的代理。例如:如果用户请求链接“ http://myapp/proxy ”,我想将请求转发到外部网站并检索对用户的响应。这里的问题是我不想进行 URL 重定向,但我想代表用户转发客户端请求。
我如何使用 Phoenix 框架来做到这一点?
我有以下设置并且工作正常(我在 Docker 1.6 上):
一个 Docker 容器充当在各个 Docker 容器中运行的其他 Web 应用程序的虚拟主机代理。(我应该补充一点,我不是配置服务器或网络方面的高手。)
我一直在尝试将 SSL 添加到设置中,但收效甚微。每个容器在主机上挂载证书的文件目录。例如,一旦我使用以下命令运行容器:
docker run -d -P --name build \
-v /home/applications/src/ssl-cert:/etc/ssl/certs \
-e "DBL=mysql:dbname=build;host=192.168.0.1;port=3306" \
-e "DB_USER=foo" -e "DB_PASS=bar" \
--link mysql56:mysql \
--add-host dockerhost:`/sbin/ip addr | grep 'eth0' | grep 'inet' | cut -d'/' -f1 | awk '{print $2}'` \
-p 8001:80 -p 4431:443 \
repos/build:latest
Run Code Online (Sandbox Code Playgroud)
如果我尝试连接,https://build.example.com我会收到证书错误并且无法连接。容器的 Apache 配置在证书文件的 default-ssl.conf 中有适当的配置(如果这是一个独立的实例,它可以工作):
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
# Enable/Disable SSL for this virtual host.
SSLEngine …Run Code Online (Sandbox Code Playgroud) 不同测试容器的每次启动都会抛出com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"Get https://quay.io/v1/_ping: dial tcp x.x.x.x: getsockopt: connection refused"}
这并不奇怪(docker 背后有一个公司代理)。如何配置 testcontainers 使用特定的 HTTP 代理?
另一种方法可能是禁用“ping”命令并使用我们公司的 docker 存储库。
如何根据代理环境变量编写自动使用代理的 Go 程序?
在go get本身支持标准的代理环境变量,但我说的是围棋程序/代码本身。
这个博客说,
默认情况下,http.Client 在处理任何 http.Request 之前检查 HTTP_PROXY 和 HTTPS_PROXY 变量。
我试过了,但它不适用于我的以下代码:
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
resp, err := client.Get(url)
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Express 中调试代理,使用http-proxy-middleware,但无论我做什么,我都得到绝对零响应。端点发送响应,但代理永远不会返回响应,也永远onProxyRes不会触发事件。此外,端点可以通过curlInsomnia、fetchAPI直接访问,并request-promise用作我们客户的 API。
即使设置如此简单:
app.use('/api', proxy({
target: 'https://my.secret.endpoint',
changeOrigin: true
});
Run Code Online (Sandbox Code Playgroud)
除了ECONNRESET超时后,我得到绝对零响应。有什么建议?
当我尝试通过 HTTPS 代理发出请求时 -
async with session.get(
url
headers={"k": v},
proxy='https://my-proxy.com:1234',
) as response:
resp_json = await response.json()
Run Code Online (Sandbox Code Playgroud)
我的请求失败,但出现以下异常:
raise ValueError("Only http proxies are supported")
Run Code Online (Sandbox Code Playgroud)
这对应于源代码。
然而,文档说支持 HTTPS 代理。
这是文档中的疏忽还是我做错了?
我们正在尝试让代理功能在 Windows 上的 .Net Core 3.0(或 3.1)应用程序中工作。我们发现 HTTPS_PROXY 和 HTTP_PROXY 变量按预期识别和处理,但默认代理似乎不支持 NO_PROXY 变量。这是示例代码:
HttpClient client = new HttpClient();
IWebProxy myProxy = HttpClient.DefaultProxy;
Uri target = new Uri(args[0]);
Uri proxy = myProxy.GetProxy(target);
Console.WriteLine($"Target proxy for {target} is {proxy} {myProxy.IsBypassed(target)}");
Run Code Online (Sandbox Code Playgroud)
如果我从 Powershell 运行它:
if (-not $env:path.Contains('c:\data\src')) {
$env:path = "$env:Path;C:\data\src\Local\DefaultProxy\bin\Debug\netcoreapp3.0"
}
$env:HTTPS_PROXY = 'http://10.11.10.10'
$env:NO_PROXY = '*'
DefaultProxy https://www.contoso.com
Run Code Online (Sandbox Code Playgroud)
我得到:https://www.contoso.com/ 的目标代理是http://10.11.10.10/ False
我希望得到空白和真实。
我应该更改什么才能使用 NO_PROXY 从默认代理中排除域?
我有一个关于Corkscrew的问题,我用它来通过HTTP代理获得SSH.SSH适用于外部主机,但不适用于本地主机.如何禁用SSH以通过HTTP-Proxy连接到本地服务器?我想这就是我得到的问题:
root@V01-XXXX:~# ssh root@172.XX.XX.8
Proxy could not open connnection to 172.XX.XX.8: Forbidden
ssh_exchange_identification: Connection closed by remote host
Run Code Online (Sandbox Code Playgroud)
我的/ etc/ssh/ssh_config文件包含:
Host *
ProxyCommand /usr/bin/corkscrew proxy.ezorg.nl 8080 %h %p
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在尝试实现最简单的示例:
var http = require('http'),
var httpProxy = require('http-proxy');
httpProxy.createServer(function (req, res, proxy) {
//
// I would add logging here
//
proxy.proxyRequest(req, res, { host: 'www.google.com', port: 80 });
}).listen(18000);
Run Code Online (Sandbox Code Playgroud)
当我将浏览器配置为使用此代理并导航到www.google.com时,我没有收到任何回复.我做错了什么?
我正在使用Windows 7 Chrome
使用下面的简单代码,RestClient无法通过Web代理访问。它不尊重请求的价值。
我可以在浏览器中访问要查询的网站;但是RestClient被我公司的代理阻止了。
try
{
RestClient client = new RestClient("http://services.groupkt.com/country/get/all");
RestRequest request = new RestRequest(Method.POST);
//set credentials to default
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
//also tried using client.UserAgent to spoof Firefox user-agent to no avail
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
IRestResponse response = client.Execute(request);
textBox1.Text = response.Content;
}
catch (Exception ex)
{
textBox1.Text = "ERROR:" + ex.Message;
}
Run Code Online (Sandbox Code Playgroud)
所以我在textBox1中最终得到的是html,它呈现为:
仅授权
Secure Web Gateway已阻止您的请求,因为您尚未获得授权并且需要授权。
网址:
用户名/来源:/ 10.xx.xx.xx
规则集:使用Kerberos和NTLM后备身份验证进行身份验证/身份验证
使用Kerberos(不评估NTLM令牌)
重要说明:当您访问Internet网页时,您应该遵守[CompanyName] Internet过滤的授权批准。
产生2017-05-05 15:04:08
RestSharp 104.1.0.0
换句话说,RestSharp不会像默认的那样将默认凭据传输到Web代理。
http-proxy ×10
proxy ×3
c# ×2
docker ×2
javascript ×2
aiohttp ×1
apache ×1
docker-java ×1
express ×1
go ×1
http ×1
https ×1
java ×1
local ×1
node.js ×1
python ×1
restsharp ×1
ssh ×1
ssl ×1
virtualhost ×1