=================================
proxy 的写法
=================================
一般写法是:
http://my.proxy.address:8080

带密码的验证写法如下,
http://domain/username:password@servername:port/
用户密码往往是 windows 域的账号密码, 密码最好不要带空格和%号和@号和冒号, 一旦包含了这些特殊字符就必须转义, 很麻烦, 所以最简单的方式是修改密码, 而不是转义.

=================================
chrome
=================================
chrome 的启动命令增加下面启动参数:
# Disable proxy
--no-proxy-server

# Manual proxy address
--proxy-server=<scheme>=<uri>[:<port>][;...] | <uri>[:<port>] | "direct://"

# Manual PAC address
--proxy-pac-url=<pac-file-url>

# Disable proxy per host
--proxy-bypass-list=(<trailing_domain>|<ip-address>)[:<port>][;...]

=================================
vs code 的配置
=================================
vs code 经常在线安装扩展, 下面的网络 proxy 设置方法
方法 1: 在 preferences 中设定如下配置, 一般"http.proxyStrictSSL" 应该配置为false
// Place your settings in this file to overwrite the default settings
{
"http.proxy": "http://my.proxy.address:8080",
"https.proxy": "http://my.proxy.address:8080",
"http.proxyStrictSSL": false
}

方法2: vs code 和基于 Electron 的所有应用都是基于 Chromium的, 它们都和 Chrome 有同样的启动命令参数, 可以使用 chrome 的启动命令行, 见 chrome 的配置说明.

=================================
eclipse 设置
=================================
在 eclipse.ini 配置如下参数, 即可启用Windows的系统代理,
-Djava.net.useSystemProxies=true

下面是一些其他设置项, 可以按需启用.
// NoProxy
-Dhttp.noProxyHosts=localhost|127.0.0.1|192.168.0.1

// HTTP
-Dhttp.proxyHost=http://proxy.memorynotfound.com
-Dhttp.proxyPort=80

// HTTPS
-Dhttps.proxyHost=https://proxy.memorynotfound.com
-Dhttps.proxyPort=443

=================================
npm 的配置
=================================
使用如下命令设置代理, 或者直接编辑 C:\Users\<username>\.npmrc 文件

npm config set proxy=http://<username>:<pass>@proxyhost:<port>
npm config set https-proxy=http://<uname>:<pass>@proxyhost:<port>
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"

最好使用国内镜像站点, 比如下面的前两个:
cnpm --- http://r.cnpmjs.org/
taobao - http://registry.npm.taobao.org/
npm ---- https://registry.npmjs.org/
eu ----- http://registry.npmjs.eu/
au ----- http://registry.npmjs.org.au/
sl ----- http://npm.strongloop.com/
nj ----- https://registry.nodejitsu.com/

=================================
Maven configuration
=================================
Edit the proxies session in your ~/.m2/settings.xml file, 内容如下:
<proxies>
<proxy>
<id>id</id>
<active>true</active>
<protocol>http</protocol>
<username>username</username>
<password>password</password>
<host>host</host>
<port>port</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>

=================================
Gradle configuration
=================================
If you want to set these properties globally then add it in USER_HOME/.gradle/gradle.properties file

## Proxy setup
systemProp.proxySet="true"
systemProp.http.keepAlive="true"
systemProp.http.proxyHost=host
systemProp.http.proxyPort=port
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password
systemProp.http.nonProxyHosts=local.net|some.host.com

systemProp.https.keepAlive="true"
systemProp.https.proxyHost=host
systemProp.https.proxyPort=port
systemProp.https.proxyUser=username
systemProp.https.proxyPassword=password
systemProp.https.nonProxyHosts=local.net|some.host.com
## end of proxy setup

=================================
Git configuration
=================================
Use these commands:

git config --global http.proxy http://username:password@host:port
git config --global https.proxy http://username:password@host:port
git config --global http.sslVerify false

Or you can edit directly your ~/.gitconfig file:

[http]
proxy = http://username:password@host:port
[https]
proxy = http://username:password@host:port

=================================
使用cntlm管理代理
=================================
上面的软件有对应的设置接口, 对于另一些软件根本没有这样的接口, 所以不能上面的类似做法. 即使上述方法可用, 一旦修改Windows密码, 还需要重新设置一遍. 这里介绍一个终极的做法, 使用 cntlm 软件.
软件下载 http://cntlm.sourceforge.net/

(1) 安装的时候, 最好选择默认安装路径, 否则后续运行会有问题.
(2) 修改安装目录的 cntlm.ini, 可以在 ini 文件中指定明文密码, 如果不想设置明文密码, 可以使用下面命令行, 生成hash后的密码.
cntlm -H
cntlm.ini 文件Listen 设置项默认是 3128 , 也就是将来的代理接口是, http://127.0.0.1:3128 , 如果将来的代理要开放给其他机器, 最好设置成 your_ip:3128 格式, 或者 0.0.0.0:3128 即可.  
(3) 验证设置是否正确, 通过访问百度来验证
cntlm -c /path/to/cntlm.ini -M http://www.baidu.com
运行后会要求输入登录代理的密码,输入后,如果配置正确,会返回200响应和PassNTLMv2
(4) 启动 cntlm 服务
使用命令启动服务, C:\Windows\System32\net.exe start /path/to/cntlm.exe
或者使用 cntlm 的开始菜单start service 来启动.

(5)cntlm 程序报错最有可能的原因是, cntlm.exe 找不到 cntlm.ini 文件, 一般修改注册表会解决这个问题的.
Open regedit.exe and go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cntlm\Parameters.
Then change the AppArgs key to
-f -c "C:\Program Files\Cntlm\cntlm.ini"

=================================
boot2docker 的设置
=================================
1. 域名服务器的修改,  先在 HostOS windows 的 CMD 窗口执行 nslookup, 能得到域名服务器的ip. 将域名服务器加到 /etc/resolv.conf 文件中, 增加如下一行内容:
nameserver dns_server_ip

需要说明的是 /etc/resolv.conf 在每次重启 boot2docker 后都会被重置, 最好是将它保存到 /var/lib/boot2docker/profile 文件中.

2. 在 /var/lib/boot2docker/profile 设置 registry 和 dns 信息.
需要说明的是:
1. registry-mirror 和普通 docker registry 区别在于, mirror 只能 pull 不能 push.
2. 默认情况下, docker 对于 http 类型的私服是不信任的, 如果一定要使用, 需要将该私服加到 insecure-registry 参数中.
3. insecure-registry 和 dns 参数可以设置多个.
4. https://docker.mirrors.ustc.edu.cn 是国内比较好用的一个mirror, 不要注册就可以使用.

内容如下:

EXTRA_ARGS="
--dns dns_server_ip
--insecure-registry registry_server:5000
--registry-mirror https://docker.mirrors.ustc.edu.cn
"

3. 在 /var/lib/boot2docker/profile 文件中,   export proxy相关的设置.
说明: 192.168.1.100 是 boot2docker VM 的IP, 将它加到 NO_PROXY 中, 将 localhost, 127.0.0., 10., /var/run/docker.sock 也加到 NO_PROXY 中, 内容如下:

export HTTP_PROXY=http://my.proxy.address:8080
export HTTPS_PROXY=http://my.proxy.address:8080
export NO_PROXY=192.168.1.100,localhost,/var/run/docker.sock,127.0.0.*,10.*,192.168.*
export http_proxy=http://my.proxy.address:8080
export https_proxy=http://my.proxy.address:8080
export no_proxy=192.168.1.100,localhost,/var/run/docker.sock,127.0.0.*,10.*,192.168.*

或者在创建 boot2docker 虚拟机时就指定代理设置, 命令行如下:
docker-machine create -d virtualbox \
--engine-env HTTP_PROXY=http://my.proxy.address:8080 \
--engine-env HTTPS_PROXY=http://my.proxy.address:8080 \
--engine-env NO_PROXY=192.168.1.100,localhost,/var/run/docker.sock,127.0.0.*,10.*,192.168.* \
default

4. [可选]在 HostOS windows 设置几个环境变量:
它们是 HTTP_PROXY 和 HTTPS_PROXY 和 NO_PROXY, 取值同上.

5. docker 命令
(1)docker pull 等命令会自动使用上面的代理设置, 示例如下:
docker pull hello-world:latest

(2)docker build 并不会自动读取上面的代理设置, 需要在docker build 命令中指定代理.
docker build --build-arg http_proxy=http://169.254.123.45:3128 \
--build-arg https_proxy=http://169.254.123.45:3128 \
-t myawesomeimage:latest .

(3)docker 容器进程使用代理
假设一个 Java 程序, 下面的 test.sh 是容器的entry point脚本.

if [[ ! -z "$http_proxy" ]] || [[ ! -z "$https_proxy" ]]; then
export JAVA_OPTS="-Djava.net.useSystemProxies=true $JAVA_OPTS -Dhttp.noProxyHosts=${POSTGRES_IP}"
fi

容器启动时候, 可以传入 proxy 设置.
sudo docker run -e "http_proxy=http://myproxy.example.com:8080" \
-e "https_proxy=https://myproxy.example.com:8080" \
-e "POSTGRES_IP=192.168.100.101" \
-d Cron\ubuntu test.sh

=================================
参考
=================================
https://www.jhipster.tech/configuring-a-corporate-proxy/
https://crondev.com/running-docker-behind-proxy/
https://segmentfault.com/a/1190000004827169
https://mandie.net/2017/12/10/docker-for-windows-behind-a-corporate-web-proxy-tips-and-tricks/
https://exceptionshub.com/using-npm-behind-corporate-proxy-pac.html
http://blog.majcica.com/2016/01/13/tough-life-behind-a-proxy/
https://memorynotfound.com/configure-http-proxy-settings-java/

work behind corp proxy的更多相关文章

  1. 实现代理设置proxy

    用户在哪些情况下是需要设置网络代理呢? 1. 内网上不了外网,需要连接能上外网的内网电脑做代理,就能上外网:多个电脑共享上外网,就要用代理: 2.有些网页被封,通过国外的代理就能看到这被封的网站:3. ...

  2. Could not create SSL connection through proxy serve-svn

    RA layer request failedsvn: Unable to connect to a repository at URL xxxxxx 最后:Could not create SSL ...

  3. could not initialize proxy - no Session

    这是一个精典的问题:因为我们在hibernate里面load一个对象出来时,用到的是代理对象,也就是说当我们在执行load方法时并没有发sql语句,而是返回一个proxy对象.只有当们具体用到哪个ge ...

  4. ABP源码分析三十七:ABP.Web.Api Script Proxy API

    ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...

  5. Java设计模式之代理模式(Proxy)

    前言: 最近在研究Retrofit开源框架的时候,其主要核心代码是通过注解标示参数,动态代理模式实现具体接口,反射机制进行参数解析,最终实现发送请求.其实之前在学习Xutils源码的时候,Xutils ...

  6. 设计模式(十三)代理模式(Proxy Pattern)

    一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...

  7. 设计模式-代理模式(Proxy Model)

    文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/5988145.html 目录 1.写在前面 2.概述 3.目的 4.结构组成 5.实现 5 ...

  8. 神秘代理-Proxy

    前言: 代理模式作为常见的设计模式之一,在项目开发中不可或缺.本文就尝试着揭开代理的神秘面纱,也欢迎各路人批评指正! 1.如何实现代理: [假设有个关于汽车移动(move)的计时需求]设计:Movea ...

  9. 12,13 Proxy和Reflect

    Proxy和Reflect Proxy(代理) Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程 ...

随机推荐

  1. sql 上舍下舍運用

    [四舍五入取整截取] select round(54.56,0) [向下取整截取] SELECT FLOOR(54.56) [向上取整截取]  SELECT   CEILING(13.15) --MS ...

  2. mysql(mariadb)主从配置

    环境: 内核版本:uname -r 系统版本:cat /etc/redhat-release

  3. RocketMQ4.3.x 史上配置最全详解,没有之一

    最近整理了RocketMQ的配置参数一部分参考rocketmq技术内幕,一部分自己看源码猜测,有表述不清楚或不正确请广大网友指正 这里应该是最全的配置解析了,搞了2天.以后查询就好办了,仅此贡献给广大 ...

  4. Hybrid APP之Native和H5页面交互原理

    Hybrid APP之Native和H5页面交互原理 Hybrid APP的关键是原生页面与H5页面直接的交互,如下图,痛过JSBridge,H5页面可以调用Native的api,Native也可调用 ...

  5. 【转】手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  6. 编译安装redis-5.0.4

    编译安装为redis官方推荐安装方式. 本例中使用linux版本为:CentOS Linux release 7.0.1406 (Core),Basic Web Server 一.安装依赖包 yum ...

  7. QTableWidgetItem class

    Help on class QTableWidgetItem in module PyQt5.QtWidgets: class QTableWidgetItem(sip.wrapper)  |  QT ...

  8. PHP+Mysql 实现数据库增删改查

    PHP和Mysql可以对数据库进行简单的增删改查,本文介绍了新闻列表的后台管理. Mysql数据库创建 创建一个新闻列表的数据库: 1. 查询数据库 1.1. 创建文件dbconfig.php,保存常 ...

  9. FLOAT 和 DOUBLE区别

    以下是 FLOAT 和 DOUBLE 的区别: float : 单精度浮点数 double : 双精度浮点数 ·浮点数以 8 位精度存储在 FLOAT 中,并且有四个字节. ·浮点数存储在 DOUBL ...

  10. PS教程:抠透明冰块

    1.打开我们需要用到的素材,ctrl+a全选,ctrl+c复制 2.接下来给图层添加一个图层蒙版,按alt键点击图层蒙版,看到它变成白色了 3.ctrl+v,把刚才复制好的图粘贴进来 4.接着ctrl ...