次の問題があります。企業ネットワークの CentOS でプライベート サーバーを実行しています。プロキシ サーバーは、NTLMV2 認証を実行している Windows 上にあります。
そこで、必要なリソースにアクセスするために、CentOS サーバーに cntlm をインストールしました。すべてがうまくいきました。つまり、ターミナルから実行すると、curl、wget、および yum がこの cntlm プロキシで正しく動作します。
ただし、うまくいかないことが 1 つあります。また、このサーバーで実行されている Apache + PHP + MySQL インスタンスもあります。秘訣は、どういうわけかプロキシにアクセスできないことです。curl で動作するサンプル PHP ファイルは次のとおりです。
<?php
$url = "http://www.google.com";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_PROXY, 'http://127.0.0.1:3128');
$data = curl_exec($ch);
if ($data == FALSE) echo curl_error($ch);
curl_close($ch);
var_dump($data);
?>
コマンドラインからこれを実行すると:
php curl.php | tail -n 10
すべてがうまく機能し、このプロキシを介してグローバル リソースにアクセスできます。ただし、ブラウザー ページから実行すると、Apache は接続できず、「127.0.0.1 への接続に失敗しました: 許可が拒否されました」というエラーが表示されます。