Java
Windows
Linux
CentOS
Vagrant

日々プロキシで苦しむ人の為のプロキシ設定まとめ

More than 1 year has passed since last update.


はじめに


  1. カタカタカタカタ

  2. できたできた!さぁ動かすぞっていうときのUnknownHost・・・・

  3. またか・・・とため息をつきながらぐぐる

  4. 設定する

  5. 1へ戻る

プロキシが憎い!

だけど、頑張ってくぐらないといけない!そんなあなたの為のプロキシ設定まとめです。私が良く使うものを随時更新していきます。

追加して欲しいものがあればコメントいただければ追加しますので編集リクエストください。

尚以下のような記述はご自分の環境に合わせて変更をお願いします。

http[s]://PROXY_HOST:PROXY_PORT



環境


  • Windows,CentOSを前提としています。

  • Ubuntuは会社ではあまり使わないので・・・



ブラウザ

書かなくてもいい気がしたが一応書いておく。社内サーバ系は除外リストに入れとこ。


IE


  • インターネットオプション ⇒ 接続 ⇒ LANの設定


Chrome


  • Chromeのプロキシ設定はIEの設定を見ます。Chromeから開く場合は以下の手順。

  • 設定 ⇒ 画面下部の「詳細設定を表示」 ⇒ プロキシ設定の変更


  • プロキシのせいでSlideShareが見れない人は、SlideShareViewerが必須です。



FireFox


  • 独自でプロキシ設定を持っているので設定しておく。

  • ツール ⇒ オプション ⇒ 詳細タブ ⇒ ネットワーク ⇒ 接続設定



構成管理


Git


  • gitコマンドで追加(~/.gitconfigに追記される)

$ git config --global http.proxy http://PROXY_HOST:PROXY_PORT

$ git config --global https.proxy http://PROXY_HOST:PROXY_PORT


  • 環境変数で追加

$ export http_proxy="http://PROXY_HOST:PROXY_PORT"

$ export https_proxy="http://PROXY_HOST:PROXY_PORT"


SVN(Subversion)


コマンド


  • Jenkins設定するときによく使うんだよね。

cat ~/.subversion/servers

[global]
http-proxy-exception = NO_PROXY_HOST
http-proxy-host = PROXY_HOST
http-proxy-port = PROXY_PORT


Tortoise Svn


  1. settingの画面で、左タブ⇒Networkを開く

  2. Enable Proxy Serverにチェックをつけてプロキシの設定を行う。



CI


Jenkins

 Jenkinsの管理 -> プラグインの管理 -> 高度な設定

でもいいし、Javaの起動引数に以下を追加してもOK

 -Dhttp.proxyHost=PROXY_HOST -Dhttp.proxyPort=PROXY_PORT


コマンド


curl


  • コマンド

curl -x PROXY_HOST:PROXY_PORT -L url


  • 設定ファイル

echo `proxy = "http[s]://PROXY_HOST:PROXY_PORT/"' >> ~/.curlrc


wget


  • 環境変数

export http_proxy="http[s]://PROXY_HOST:PROXY_PORT/"

export https_proxy="http[s]://PROXY_HOST:PROXY_PORT/"
export ftp_proxy="http[s]://PROXY_HOST:PROXY_PORT/"


  • 設定ファイル(/etc/wgetrc, ~/.wgetrc)

proxy_user=PROXY_USER

proxy_password=PROXY_PASSWORD
http_proxy=http[s]://PROXY_HOST:PROXY_PORT/
https_proxy=http[s]://PROXY_HOST:PROXY_PORT/


yum


  • 環境変数

export http_proxy="http[s]://PROXY_HOST:PROXY_PORT/"

export https_proxy="http[s]://PROXY_HOST:PROXY_PORT/"


  • 設定ファイル(/etc/yum.conf)


/etc/yum.conf

proxy=http[s]://PROXY_HOST:PROXY_PORT/

proxy_username=[UserId]
proxy_password=[Password]


rpm


  • 環境変数

export http_proxy=http[s]://PROXY_HOST:PROXY_PORT/


  • コマンドライン

rpm --httpproxy PROXY_HOST--httpport PROXY_PORT



Powershell


Invoke-WebRequest


  • -Proxyを利用する(AnsibleでWinRMを利用する時に利用するスクリプトをダウンロードする場合はこんな感じ)

Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/Con

figureRemotingForAnsible.ps1 -OutFile ConfigureRemotingForAnsible.ps1 -Proxy http://PROXY_HOST:PROXY_PORT



python


pip

pip install モジュール名 --proxy=http://PROXY_HOST:PROXY_PORT


boto


  • botoはAWSにアクセスするためのモジュールです。


~/.boto

[Boto]

debug = 0
num_retries = 10

proxy = PROXY_HOST
proxy_port = PROXY_PORT
proxy_user = foo
proxy_pass = bar




Ruby


gem

gem install パッケージ名 -r -p http[s]://PROXY_HOST:PROXY_PORT/


bundler, rbenv

export http_proxy=http[s]://PROXY_HOST:PROXY_PORT/



Java


Eclipse


  • ウィンドウ ⇒ 設定 ⇒ 一般の下のネットワーク接続

  • 「ネイティブ」はIEの設定を引っ張ってきています。それに対しマニュアルは自分で設定を行うモードです。


HttpClient4.x系


  • 3と4で違うあたりが憎くてしょうがないですが、、、HttpClientに設定してあげます。


ソースで指定


proxy.java

        HttpClient httpClient = HttpClientBuilder

.create()
.setDefaultRequestConfig(requestConfig)
.setDefaultHeaders(headers)
.setProxy(new HttpHost("PROXY_HOST", PROXY_PORT))
.build();


VMパラメータで指定


  • VMパラメータでも設定できますがHttpClientに.useSystemProperties()を設定する必要があります。

-Dhttp[s].proxyHost=PROXY_HOST -Dhttp[s].proxyPort=PROXY_PORT


httpclient.java

        HttpClient httpClient = HttpClientBuilder.create()

.setDefaultRequestConfig(requestConfig)
.setDefaultHeaders(headers)
.useSystemProperties()
.build();


Gradle


  • 環境変数では設定できないようです。また、UserとPasswordは使わなくてもプロパティとしては必要な模様


gradle/gradle.properties

systemProp.http.proxyHost=myproxy.co.jp

systemProp.http.proxyPort=8080
systemProp.http.proxyUser=
systemProp.http.proxyPassword=
systemProp.https.proxyHost=myproxy.co.jp
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=
systemProp.https.proxyPassword=


Maven


Maven


  • settings.xmlに記載する

  • archivaなどが社内にいる場合はnonProxyHostsの設定を忘れずに。


settings.xml

<settings>

<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>PROXY_HOST</host>
<port>PROXY_PORT</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
</proxy>
</proxies>
</settings>


MavenWrapper(mvnw)

export MAVEN_OPTS=-Dhttp.proxyHost=PROXY_HOST -Dhttp.proxyPort=PROXY_PORT -Dhttps.proxyHost=PROXY_HOST  -Dhttps.proxyPort=PROXY_PORT



Go


go get

export http_proxy=http[s]://PROXY_HOST:PROXY_PORT

export https_proxy=http[s]://PROXY_HOST:PROXY_PORT


Apache Archiva

1.左メニュー[NetworkProxies]を選択

2.ID,Protocol,Host,Portなどの情報を登録してSaveする。

3.左メニュー[ProxyConnectors]を選択

4.外部リポジトリに接続するリポジトリで[Edit]を選択 例:central

5.NetworkProxyに先ほど登録したProxyのIDを選択してSaveする。


AWS(SDK for Java)


  • ClientConfigurationのインスタンスを作成してAmazonEC2のコンストラクタに渡してあげるだけです。

  • EC2に限らずSQSなどなど他のクライアントクラスでも同様


clientconfiguration.java

        AWSCredentialsProvider provider = new ClasspathPropertiesFileCredentialsProvider();

ClientConfiguration cc = new ClientConfiguration();
cc.setProxyHost("PROXY_HOST");
cc.setProxyPort(PROXY_PORT);

AmazonSQS sqs = new AmazonSQSClient(provider, cc);
sqs.setRegion(Region.getRegion(Regions.AP_NORTHEAST_1));
return sqs;



SoftLayer(Java)


  • 内部ではURLConnectionを使っているので、Javaのシステムプロパティに設定してあげればプロキシ経由できます。


proxy.java

System.setProperty("proxySet", "true");

System.setProperty("proxyHost", proxyHost);
System.setProperty("proxyPort", proxyPort);



監視


DataDog Agent


  • 設定ファイル


/etc/dd-agent/datadog.conf

proxy_host: PROXY_HOST

proxy_port: PROXY_PORT
proxy_user:
proxy_password:


mackerel-agent


  • 設定ファイル


/etc/mackerel-agent/mackerel-agent.conf

http_proxy = "http://PROXY_HOST:PROXY_PORT"



  • 環境変数

HTTP_PROXY=http://PROXY_HOST:PROXY_PORT



その他環境


Vagrant


vagrant upするときの通信(windowsの場合)

set http_proxy=PROXY_HOST:PROXY_PORT

set https_proxy=PROXY_HOST:PROXY_PORT


ゲストOS上のProxyを自動設定

プロキシ設定対象はこちら

generic http_proxy etc. environment variables that many programs support

default proxy configuration for all Chef provisioners
proxy configuration for Apt
proxy configuration for Docker
proxy configuration for Git
proxy configuration for npm
proxy configuration for PEAR
proxy configuration for Subversion
proxy configuration for Yum
simple proxy configuration for Windows

1. vagrant proxyconfを利用します。

このプラグインはVagrant管理下のOS起動時にプロキシを自動的に設定してくれるプラグインです。たとえばyum利用時にいちいちproxyの設定をする必要が無くなります。

vagrant plugin install vagrant-proxyconf

2. プラグインがインストールできたことを確認しましょう。

$ vagrant plugin list

vagrant-proxyconf (1.5.0)

3. Vagrantfileに設定を追加します。

Vagrant.configure(2) do |config|

・・・・・
if Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http = "http://PROXY_URL:PROXY_PORT/"
config.proxy.https = "http://PROXY_URL:PROXY_PORT/"
config.proxy.no_proxy = "localhost,127.0.0.1,192.168."
end
end


Azure


  • azure cli

# export https_proxy=http[s]://PROXY_HOST:PROXY_PORT/

# export http_proxy=http[s]://PROXY_HOST:PROXY_PORT/


VirtualBox


  • ファイル - 環境設定 - プロキシで設定


Docker


Docker(CentOS7,Docker1.9.1で確認)


  • docker pull,searchするには外部と接続する必要がありますので設定してみます。公式ドキュメントはこちら
    1.proxy用の設定ファイルを作る(/etc/systemd/system/docker.service.dは新たに作る)


/etc/systemd/system/docker.service.d/http-proxy.conf

[Service]

Environment="HTTP_PROXY=http[s]://PROXY_HOST:PROXY_PORT/" "HTTPS_PROXY=http[s]://PROXY_HOST:PROXY_PORT/"

2.変更を反映する

sudo systemctl daemon-reload

3.反映を確認する

# systemctl show --property=Environment docker

Environment=GOTRACEBACK=crash HTTP_PROXY=http[s]://PROXY_HOST:PROXY_PORT/ HTTPS_PROXY=http[s]://PROXY_HOST:PROXY_PORT/

4.反映する

systemctl restart docker


Docker-machine


  • Docker-machineをcreateするときに利用します。

docker-machine create -d virtualbox --engine-env HTTP_PROXY=http[s]://PROXY_HOST:PROXY_PORT/ --engine-env HTTPS_PROXY=http[s]://PROXY_HOST:PROXY_PORT/ --engine-env NO_PROXY=127.0.0.1 \

docker


Dockerfile


  • Dockerfile内でyumなどを行う場合、ENVで環境変数を定義しても良いのですが・・・

ENV http_proxy http[s]://PROXY_HOST:PROXY_PORT/



  • ARGを使うとDockerfileがproxyに依存しなくなります。予め以下のARGは定義済です。

HTTP_PROXY

http_proxy
HTTPS_PROXY
https_proxy
FTP_PROXY
ftp_proxy
NO_PROXY
no_proxy


  • docker buildするときに--build-argsを設定してあげましょう

docker build --build-arg HTTP_PROXY=http[s]://PROXY_HOST:PROXY_PORT --build-arg HTTPS_PROXY=http[s]://PROXY_HOST:PROXY_PORT -t uzresk/xxxx:ver1.1 .


ElasticSearch


  • pluginのインストール時にproxyを設定します。

  • elasticsearch-headプラグインをインストールする場合は以下のようなコマンドになります。

/usr/share/elasticsearch/bin/plugin -DproxyPort=PROXY_PORT -DproxyHost=PROXY_HOST -i

nstall mobz/elasticsearch-head


cygwin


  • setup.exeを進んでいくとプロキシ設定する画面がでてくるのでそこに入力