[linux] proxyのせいでcurlが「curl: (7) couldn’t connect to host」でつながらない時の解決方法

プロキシを越えてってのは、ひとつのテーマみたいな気がしますが、今回はプロキシを越えてcurlを使う場合の話です。
以前にはproxyを越えてyumを使うって話がありました。

問題の症状

例えば、今回はcomposerを入れようとして問題が起きたんですが、curlを使おうとすると、以下のような問題が起きました。

# curl -sS https://getcomposer.org/installer | php
curl: (7) couldn't connect to host

「curl: (7) couldn’t connect to host」というエラーですね。
この手の問題で一番最初に疑うのは、もはやプロキシが越えられないという問題なわけです。今回もそれでビンゴでした。

一時的な解決方法

curlコマンドには、オプションでプロキシを指定する方法があります。
「-x」というオプションでこれをつけることでプロキシを指定してアクセスをすることが可能です。
以下のような感じです。

# curl -x http://myproxy.com:8080/ -sS https://getcomposer.org/installer | php

(中略)

Downloading...

常時プロキシを設定させる

ただ、上記の方法だと、毎回指定をしなければいけなくて面倒くさいです。
プロキシ通さなきゃいけない時はもう常に永遠にプロキシ越しなので、恒久的に設定しておきたいわけです。そういう時は以下のようにします。

# vi /etc/bashrc

(viで開いたので、一番最後の行とかに以下を追記)

alias curl="curl -x http://proxy.jpn.hp.com:8080/"

(:wqで保存して終了)

書く場所はある程度どこでもいいんだと思いますが、私の場合は、常に/etc/bashrcに書くように統一してます。
ここに、curlを呼び出すときは、常にxオプションが付いた形で呼び出す形に指定してあげます。

ちなみに、「.curlrc」というファイルを作ってあげて、そこに「proxy = :」の形で記載して上げる方法もあるみたいなんですが、そっちの方は難しそうだったので、今回は避けました(笑)

役に立たなかった情報

なんか、環境変数のhttp_proxyを設定しておけば、curlが自動的にそれを参照してくれるって記述がいろんなサイトでありましたが、それに関しては効果なかったです。なんでなのだろうか。。
とりあえず、http_proxyはyumのときには効果ありましたが、curlでは効果なかったです。がっかり。

おしまい

今回使ったaliasの指定って、実は汎用的にいろいろ使えるんじゃないかと思いました。どっかのタイミングで、よく学んでみたい記述方法っすね。

タイトルとURLをコピーしました