1

proxy代理一般是两种情况,一使用国外代理,一是公司局域网的proxy限制。

二级代理

二级代理主要是使用可以通过proxy上网的机器,再生成proxy服务,好处有三:

  • 可提供其他不能上外网的机器用

  • 可避免proxy账号泄露

  • 也避免proxy账号更改时,需要大批量更改配置文件

搭建cntlm二级代理

在PC机上搭建代理服务器cntlm。我们的PC是windows2003,linux上的安装方式类似。官网

1 . 安装cntlm

下载cntlm.exe 安装

2 . 配置cntlm.ini文件

进入安装目录,把cntlm.ini文件配置如下:
Username    域账号
Domain        china
Password    密码
Proxy        yourproxyServer:8080
Proxy        yourproxyServer:8080
NoProxy        localhost, 127.0.0.*, 10.*
Listen        yourpcIP:3128
Allow        0/0

3 . 生成NTLM值

执行  `cntlm.exe -c cntlm.ini -M http://www.google.com` ,http://www.google.com 可替换成任意的外网址。**按提示输入域账号密码**

4 . 启动服务

把红框内容拷贝到cntlm.ini中,完整版如下:
Username    域账号
Domain        china
Password    密码
Proxy        yourproxyServer:8080
Proxy        yourproxyServer:8080
NoProxy        localhost, 127.0.0.*, 10.*
Listen        yourpcIP:3128
Allow        0/0
Auth            NTLM
PassNT          419386ED93C48D15FF169EF6370FEDEF
PassLM          25C746715EB9633900E8C9A050E00176
启动cntlm服务`net start cntlm`

Proxy配置

proxy地址为代理PC的IP地址:3128。下述提到的配置文件位置以ubuntu14.04为例,其他版本不确定。

1. 环境变量

多数软件会默认读取环境变量中的http_proxy和https_proxy,先配置为全局变量。

/etc/profile中加入:

export http_proxy="http://yourcntlmIp:3128"
export https_proxy="http://yourcntlmIp:3128"
export ftp_proxy="http://yourcntlmIp:3128"

2. apt-get

/etc/apt/apt.conf中加入:

Acquire::http::proxy "http://yourcntlmIp:3128";
Acquire::https::proxy "http://yourcntlmIp:3128";

如果内部有https限制 访问限制:

apt-get的镜像源在/etc/apt/source-list文件中,记得把https开头的镜像替换成有http

配置后需执行source /etc/profile才可生效

3. npm

npm是nodejs的一个软件管理工具

/etc/profile中加入:

export npm_config_proxy="http://yourcntlmIp:3128"

同理,需执行source /etc/profile才可生效。注:npm的proxy有多种配置方式,详情见参考链接Npm的配置管理及设置代理

https限制

npm的默认镜像是https://registry.npmjs.org/,可将镜像源替换成http或者国内镜像。替换方式:

npm config set registry http://registry.npmjs.org/
npm config set registry http://r.cnpmjs.org/

查看npm的当前镜像源,可使用npm config list查看。

注意! 如果你使用了网上的开源项目,在文档里直接执行npm install安装,修改镜像源是不生效的! 此时,需要修改安装目录下的package.jsonnpm-shrinkwrap.json 文件的resolved字段。

例如:

{
  "name": "meteor-dev-bundle",
  "version": "0.0.0",
  "dependencies": {
    "amdefine": {
      "version": "1.0.0",
      "from": "amdefine@>=0.0.4",
      "resolved": "https://registry.npmjs.org/npm-registry/amdefine/-/amdefine-1.0.0.tgz"
    },
......

改成

{
  "name": "meteor-dev-bundle",
  "version": "0.0.0",
  "dependencies": {
    "amdefine": {
      "version": "1.0.0",
      "from": "amdefine@>=0.0.4",
      "resolved": "http://registry.npmjs.org/npm-registry/amdefine/-/amdefine-1.0.0.tgz"
    },
......

Tips: 如果安装包是在https://github 或者其他网站,则需要下载到本地,然后修改resolved字段到local地址。

4. docker

docker是一种容器,与虚拟机类似,但是更加轻巧。此处的proxy配置是dockerhub(与github类似,一个镜像仓库)的连接。

/etc/default/docker中加入:

export http_proxy='http://yourcntlmIp:3128'
export https_proxy='http://yourcntlmIp:3128'

需重启docker服务才可生效,service docker restart

https限制

docker的源是http的…………

5. meteor

meteor 是nodejs的一个框架,依赖于npm install安装模块

/etc/profile中加入:要大写!

export HTTP_PROXY='http://yourcntlmIp:3128'
export HTTPS_PROXY='http://yourcntlmIp:3128'

需执行source /etc/profile才可生效

https限制

meteor在npm的基础上还加了自己的包管理。目前没有找到替换源的地方。需要meteor add,都是使用离线下载哒!

整理下离线下载的步骤:

  • 官网搜索对应的package包

  • 在package包的页面找到github所在的地址(在右边有个GitHub按钮)

  • 在github下载package包

  • 在meteor的目录下创建jpackages目录,并把下载的包解压到该目录下

  • 从package包的package.js文件中获取包的名称package-name

  • 执行meteor add <package-name>

参考链接

cntlm内网代理的代理

Npm的配置管理及设置代理


Jinl
38 声望1 粉丝