sslSwitcher 使用記 - 中間報告
HTTP_VIAの有無だけの判定では匿名、非匿名プロキシからのアクセスではSSLに切り替えることができなかったのでプロキシサーバー名を確認することで共有SSLサーバの判定方法の確実性をあげました。最終段がSSLプロキシの場合、多段プロキシ接続にはならないようです。
(1)coreserver および xrea の場合
共有SSLはcoreserver から xrea の共有SSLを使うことも可能なようです。
すべての共有サーバに対して同じ共有SSLサーバが使用されるため外部のプロキシサーバとなります。
(2)sakuraの場合
sakura では外部のプロキシからアクセスされた場合は HTTP_VIA がセットされ共有SSLの場合のみセットされません。
レンタルしている共有サーバーごとに共有SSLがセットされます。したがって外部のプロキシではありません。
(3)joes の場合
Joesに関してはプロキシタイプではなく共有SSLを使った場合にも HTTPS が on になるので判定は不要なようです。
case 'coreserver':
if ((isset($_SERVER['HTTP_VIA'])) && (strpos($_SERVER['HTTP_VIA'] , 'ss1.coressl.jp:3128'))) {
$_SERVER['HTTPS'] = 'on';
$modx->config['site_url'] = 'https://'.$httpsDomain.$modx->config['base_url'];
}
break;
case 'xrea':
if ((isset($_SERVER['HTTP_VIA'])) && (strpos($_SERVER['HTTP_VIA'] , 'ss1.xrea.com:3128'))) {
$_SERVER['HTTPS'] = 'on';
$modx->config['site_url'] = 'https://'.$httpsDomain.$modx->config['base_url'];
}
break;
case 'sakura':
if (!(isset($_SERVER['HTTP_VIA'])) && (isset($_SERVER['HTTP_X_FORWARDED_FOR']))) {
$_SERVER['HTTPS'] = 'on';
$modx->config['site_url'] = 'https://'.$httpsDomain.$modx->config['base_url'];
}
break;
}