サーバー 開発

Proxy設定

2020年4月22日

プロキシ(Proxy)設定されている会社でLinuxの構築を行った際に、色々なところにProxy設定を行わないといけなかったので備忘録としてメモ

基本形

プロキシの設定は下記の通りとなる(プロキシ環境によってhttpとhttpsが異なる)

【認証がない場合】
http[s]://【ホスト名】:【ポート番号】

【認証がある場合】
http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】

ポート番号は8080が多いイメージだが、ホスト名とポート番号は会社から指定されているものになるので確認すること。

Windows

設定

アプリによってはプロキシ設定が必要な場合もあるが、基本的にWindowsのデフォルト設定で対応可能。

自動構成スクリプトの場合、スクリプトのアドレスからファイルを取得し、JavaScriptで書かれているコードを解析する必要があるので注意

Windows10の場合は【設定】にある検索ボックスに「プロキシ」と入力すると候補が上がるので、そこから遷移できます。

設定にある検索まどからプロキシに遷移できます

【Windows10】ネットワークとインターネットからプロキシ選択で表示可能
Internet Explorerの場合も設定から遷移可能

 

Docker for Windowsの場合

Docker for Windowsを使っている場合、主にDockerファイルまたはDocker-Composeファイルにもプロキシの設定を入れる必要がある。
ただし、認証プロキシの場合、ユーザIDとパスワードをDockerファイルまたはDocker-Composeに記載が必要となり、セキュリティ的に好ましくない。
(GitなどでDockerを管理する場合はなおさら)

その場合は、ホームディレクトリに「.docker」フォルダを作成し「config.json」に下記情報を入力すればOK

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://192.168.1.12:3128",
     "httpsProxy": "http://192.168.1.12:3128",
     "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
   }
 }
}

ホームディレクトリへの表示方法はエクスプローラまたはファイル名を指定して実行にて「%homepath%」と入力すれば表示されます。

Linuxの場合

Linuxはアプリケーションによってプロキシ設定が複雑になる。

環境変数

大体は環境変数に入れればOKな場合が多い

exportコマンドを使うことでproxy設定が可能になる。
設定後、シェルを使用している間、yumやcurlが使えるようになる。(ログアウトすると消える)

no_proxyの設定を行わないと、localhostや127.0.0.1もproxy経由となるのでループバックしているサーバは思わぬ不具合が出る場合があるので注意

【認証不要】
export HTTP_PROXY=http[s]://【ホスト名】:【ポート番号】
export HTTPS_PROXY=http[s]://【ホスト名】:【ポート番号】
export FTP_PROXY=http[s]://【ホスト名】:【ポート番号】
export no_proxy="127.0.0.1,localhost"

【認証必要】
export HTTP_PROXY=http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
export HTTPS_PROXY=http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
export FTP_PROXY=http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
export no_proxy="127.0.0.1,localhost"

 

コマンドラインで実行

環境変数で設定すると、yumやcurlが使えるようになる。
ただし、認証必要なプロキシ設定の場合、historyコマンドに残る(=パスワードだだもれになる)ため取り扱いに注意が必要

 

.bashrcに記入

コマンドラインと同じだが、~/.bashrcに入力することでプロキシ設定が可能となる。

ログイン時に有効な設定となるため、bashなどを実行したい場合は bash --loginなどログイン情報引き継ぐ必要あり

ファイル記入後、再ログインしないと設定されないので注意

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

【認証不要の場合】
export HTTP_PROXY=http://192.168.1.12:3128
export HTTPS_PROXY=http://192.168.1.12:3128
export FTP_PROXY=http://192.168.1.12:3128
export no_proxy="127.0.0.1,localhost"

【認証必要の場合】
export HTTP_PROXY=http://test:aaaa@192.168.1.12:3128
export HTTPS_PROXY=http://test:aaaa@192.168.1.12:3128
export FTP_PROXY=http://test:aaaa@192.168.1.12:3128
export no_proxy="127.0.0.1,localhost"

 

/etc/enviromentに記入

記入方法はコマンドラインと同じだが、「/etc/environment」に記入することでサーバ全体のproxyとなる。
bashで外につなぐ必要がある場合はこのファイルに記載したほうが無難

全ユーザ適用となるので認証proxyは取り扱い注意

【認証不要の場合】
export HTTP_PROXY=http://192.168.1.12:3128
export HTTPS_PROXY=http://192.168.1.12:3128
export FTP_PROXY=http://192.168.1.12:3128
export no_proxy="127.0.0.1,localhost"

【認証必要の場合】
export HTTP_PROXY=http://test:aaaa@192.168.1.12:3128
export HTTPS_PROXY=http://test:aaaa@192.168.1.12:3128
export FTP_PROXY=http://test:aaaa@192.168.1.12:3128
export no_proxy="127.0.0.1,localhost"

 
 

yum

環境変数で設定した場合、何もしなくてもよいが、 CentOSやRedhatLinuxで使用されているyumを使用したい場合「/etc/yum.conf」に記載する。

proxy=http[s]://【ホスト名】:【ポート番号】/
proxy_username=【ユーザID】
proxy_password=【ユーザパスワード】

ユーザIDとユーザパスワードは分離している点注意

 
 

curl

環境変数で設定した場合、何もしなくてもよいが、curlだけ設定したい場合は「-x」を使用する。

curl -x http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】http://example.com 

 

もしくは「~/.curlrc」に記載でもproxy設定ができる。

proxy-user = "【ユーザID】:【ユーザパスワード】"
proxy = "http[s]://【ホスト名】:【ポート番号】"

 
 

wget

環境変数で設定した場合、何もしなくてもよいが、「.wgetrc」と「/etc/wgetrc」に記載する方法がある。
どちらも記載方法は同じ

#https_proxy = http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
#http_proxy = http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
#ftp_proxy = http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】

 
 

npm

Linuxだけではないが、Node.js(npm)の際もリポジトリからデータ取得するのにproxy設定が必要になる。
3つ目のregistryはSSL通信でリポジトリ取得に失敗した場合に設定する。

<proxyを設定したい場合>
【ユーザ毎の設定】
npm config set proxy http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
npm config set https-proxy http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
npm config set registry http://registry.npmjs.org/

【グローバル】
npm -g config set proxy http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
npm -g config set https-proxy http[s]://【ユーザID】:【ユーザパスワード】@【ホスト名】:【ポート番号】
npm -g config set registry http://registry.npmjs.org/

<proxyを削除したい場合>
【ユーザ】
npm config delete proxy
npm config delete https-proxy
npm config delete registry

【グローバル】
npm -g config delete proxy
npm -g config delete https-proxy
npm -g config delete registry

Docker

Dockerの場合、プロキシ設定が必要な環境でホスト側にてプロキシ設定を行っていない場合、DockerファイルやDocker-composeファイルなどでプロキシ情報を記載する必要がある。
認証プロキシや他会社とDockerを共有する場合はできるだけプロキシ情報は載せないほうがよい場合がある。

その場合は、「~/.docker/config.json」にプロキシ設定を記載すればよいそう。

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://192.168.1.12:3128",
     "httpsProxy": "http://192.168.1.12:3128",
     "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
   }
 }
}

こうすることでDockerを起動した際に自動的にプロキシ設定を行ってくれるようです。

-サーバー, 開発
-, , , , , ,