PukiWiki 1.4 では、Proxy対応がされています。Proxy対応されている機能でのみ Proxy経由での処理が実現されます。現時点においては、TrackBack、Referer、および showrss のみとなっています。 近々、自作プラグインなどでもサポートされてくることでしょう。
SOCKS5 には対応できていません。
///////////////////////////////////////////////// // HTTPリクエストにプロキシサーバを使用する $use_proxy = 0; // proxy ホスト $proxy_host = 'proxy.xxx.yyy.zzz'; // proxy ポート番号 $proxy_port = 8080; // プロキシサーバを使用しないホストのリスト $no_proxy = array( 'localhost', // localhost '127.0.0.0/8', // loopback // '10.0.0.0/8' // private class A // '172.16.0.0/12' // private class B // '192.168.0.0/16' // private class C //'no-proxy.com', );
変数名 | 設定値 | デフォルト | 備考 |
$use_proxy | 1 | 0(無効) | Proxy機能を利用するかどうか |
$proxy_host | Proxyサーバ名(通常は、IPアドレスを指定する) | ||
$proxy_port | 8080 | Proxyサーバのポート番号 | |
$no_proxy | Proxyを利用しないサーバリスト |
RFC3330 でも記述されていますが、ループバックアドレスは、 127.0.0.1 に限定されたものではありません。 通常、127 は全て、ループバックアドレスであると判断します。
Class | 範囲 | |
A | 10.0.0.0~10.255.255.255 | 10.0.0.0/8 |
B | 172.16.0.0~172.31.255.255 | 172.16.0.0/12 |
C | 192.168.0.0~192.168.255.255 | 192.168.0.0/16 |
RFC1918 に IPv4 におけるプライベートアドレスが定義されています。 必要であれば、確認して下さい。
イントラネットなどにおける、インバウンドとアウトバウンドなどの 定義は、各社まちまちであり、どこまでを Proxyサーバが扱うのか? なども違ってきますので、一律、プライベートアドレスであれば、 Proxyしない。という手はできませんので、個別定義が必要となります。
また、Proxyサーバをトラフィック削減のために、キャッシュサーバとして利用する 場合もあります。この場合は、インバウンド内であっても、 そのような利用も考えられます。
通常、Proxyサーバ名の指定は、IPアドレスを直接指定するのが良いとされています。 例えば、Proxyサーバ名としてブラウザ定義した場合には、 毎回、無駄な名前解決が入る。ということを理解して名称を利用下さい。
proxy.php に、http_request()が定義されているので、その関数を利用するように 変更すれば、Proxy対応されたプラグインとなる。 今後開発するプラグインでは、自力で fopen なりをしないように、お願いします。
詳細は、ソースを確認して下さい。
変数名 | 説明 | デフォルト |
$url | http://から始まるURL(http://user:pass@host:port/path?query) | なし |
$method | GET, POST, HEADのいずれか | GET |
$headers | 任意の追加HTTPヘッダ | なし |
$post | POSTの時に送信するデータを格納した配列('変数名'=>'値') | なし |
Proxyサーバを経由して、参照するサーバで BASIC認証が要求される場合は、 ここに、ユーザIDとパスワードを定義することで、引き渡すことが可能です。
配列名 | 説明 |
query | Query String |
rc | エラー番号(レスポンスコード) |
header | HTTPヘッダーそのもの |
data | データ |
$url = "http://pukiwiki.sourceforge.jp/dev/?cmd=read&page=PukiWiki%2F1.4%2FProxy&refer=PukiWiki%2F1.4"; $rc = http_request($url); print $rc["data"];