npmでつまずかない!proxy.pacファイルで企業プロキシを乗り越えるテクニック
企業プロキシ.pacファイルで npm を使用する
企業ネットワークでは、セキュリティ対策の一環として、インターネットアクセスをプロキシサーバー経由で制御している場合があります。このような環境で Node.js のパッケージ管理ツールである npm を利用する場合、プロキシ設定を適切に行う必要があります。
本記事では、proxy.pac ファイル を用いた npm のプロキシ設定方法について解説します。
proxy.pac ファイルは、JavaScript で記述されたファイルで、クライアントがどのリクエストをどのプロキシサーバーにルーティングするかを決定するルールを定義します。企業ネットワークでは、proxy.pac ファイルを使用して、ユーザーの所属部門や利用するホスト名に応じて、適切なプロキシサーバーを割り当てることができます。
npm で proxy.pac ファイルを使用する手順
npm config set https-proxy http://<proxy_pac_file_url>
npm cache clean
補足
- 上記の手順は、npm 7 以降で使用できます。古いバージョンの npm を使用している場合は、異なる方法が必要になる場合があります。
- プロキシ認証が必要な場合は、npm config set proxy-auth オプションを使用する必要があります。詳細は npm ドキュメントを参照してください。
- 企業によっては、npm の使用を制限している場合があります。npm を利用する前に、社内 IT 規則を確認してください。
関連用語
- npm: Node.js のパッケージ管理ツール
- proxy.pac ファイル: クライアントがどのリクエストをどのプロキシサーバーにルーティングするかを決定するルールを定義した JavaScript ファイル
- プロキシサーバー: インターネットアクセスを制御するサーバー
function FindProxyForURL(url, host) {
// 社内LAN内のホストへのアクセスは、プロキシサーバーを経由しない
if (IsLocal(host)) {
return DIRECT;
}
// 特定のホストへのアクセスは、プロキシサーバーを経由する
if (host == "www.example.com") {
return "PROXY http://proxy.example.com:8080";
}
// その他のホストへのアクセスは、デフォルトのプロキシサーバーを経由する
return "PROXY http://proxy.example.com:80";
}
上記サンプルコードの説明
FindProxyForURL
関数は、URL とホスト名に基づいて、どのプロキシサーバーを使用するかを決定します。IsLocal
関数は、ホスト名が社内LAN内のものであるかどうかを判定します。DIRECT
は、プロキシサーバーを経由せずに直接アクセスすることを意味します。
このサンプルコードはあくまで一例であり、実際の環境に合わせて変更する必要があります。
npm 設定コマンドの例
npm config set proxy http://intranet.example.com/proxy.pac
npm config set https-proxy http://intranet.example.com/proxy.pac
npm cache clean
上記コマンドの説明
npm config set proxy http://intranet.example.com/proxy.pac
コマンドは、npm に proxy.pac ファイルの場所をhttp://intranet.example.com/proxy.pac
に設定します。npm cache clean
コマンドは、npm キャッシュをクリアします。
企業プロキシ環境で npm を使用するその他の方法
環境変数
以下の環境変数を設定することで、npm にプロキシサーバーを指定できます。
HTTP_PROXY
: HTTP プロキシサーバーのアドレスNO_PROXY
: プロキシサーバーを経由しないホスト名のリスト
例:
HTTP_PROXY=http://proxy.example.com:8080
HTTPS_PROXY=https://proxy.example.com:8080
NO_PROXY=localhost,127.0.0.1,.example.com
この方法の利点:
- proxy.pac ファイルを使用するよりもシンプルでわかりやすい
- proxy.pac ファイルほど柔軟ではない
- プロキシ認証が必要な場合は使用できない
.npmrc
ファイルは、npm の設定を保存するファイルです。このファイルに以下の内容を記述することで、プロキシサーバーを指定できます。
proxy=http://proxy.example.com:8080
https-proxy=https://proxy.example.com:8080
proxy=http://proxy.example.com:8080
https-proxy=https://proxy.example.com:8080
strict-ssl=false
- ユーザーごとに設定を個別に設定できる
- 環境変数を使用するよりも設定が複雑になる
サードパーティ製ツール
- proxy.pac ファイル、環境変数、.npmrc ファイルを使用するよりも柔軟な設定が可能
- 設定と使用が複雑になる
以下に、各方法の比較表をまとめました。
方法 | 利点 | 欠点 |
---|---|---|
proxy.pac ファイル | シンプルでわかりやすい | 柔軟性に欠ける |
環境変数 | シンプルでわかりやすい | プロキシ認証が必要な場合は使用できない |
.npmrc ファイル | ユーザーごとに設定を個別に設定できる | 設定が複雑になる |
サードパーティ製ツール | 柔軟な設定が可能 | 設定と使用が複雑になる |
node.js npm proxy