У меня есть URL-адреса следующего формата (я пишу как aregex):
http://exampledomain\.com/files/.+
URL запрашивается клиентом через мой прокси-сервер.
Я ввожу пользовательскийЗаголовок авторизации в этом запросе.Это не проблема, я могу сделать это с mod_proxy и mod_headers в apache.
Однако этот URL дает 302 перенаправление на другой источник, который, наконец, должен прийти к клиенту.
Этот другой URLSSL защищен и выглядит так:
https://example.+\.exampledomain.\com/files/.+/.+
Требуется тот же заголовок авторизации, что и у другого.Но так как он hTTPS, я не могу просто ввести его, используя заголовки мода.
Поэтому я планирую настроить обратный прокси-сервер, который я использую для запроса первого URL-адреса HTTP с заголовком авторизации.За ним находится скрипт, который извлекает запрос, анализирует второй URL-адрес HTTPS и загружает источник с пользовательским заголовком авторизации и передает полученный файл (байты и заголовки http) клиенту.
Я знаком сApache2 и PHP, поэтому было бы неплохо придерживаться этого.Но это не обязательно.
Просто чтобы уточнить, речь идет о ссылках на Rapidshare здесь.У моей компании есть резервные копии файлов и хранилище, потому что это самый дешевый облачный хостинг.Есть некоторые серверы заданий, которым нужно извлекать файлы, но я не могу настроить для них имя пользователя / пароль.Таким образом, прокси-сервер должен добавить информацию об аутентификации премиум-класса.
Я думал о чем-то вроде:
proxy.php - этот файл запрашивается с использованием обратного прокси-сервера и обслуживается веб-сервером.записано правилом перезаписи htaccess и прокси-сервером восстановления на http://one -or-my-domoains / request-uri-from-the-original-request (генерируется в apache)
$url = "http://example.com/".$_SERVER["REQUEST_URI"];
$opts = array(
'http'=>array(
'header'=>"Cookie: myauthvalue=example\r\n"
)
);
$context = stream_context_create($opts);
stream_context_set_default($context);
$http_content = get_headers($url, 1);
$ssl_location = $http_content['Location'];
$fp = fsockopen("ssl://".parse_url($ssl_location, PHP_URL_HOST), 443, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET ".parse_url($PHP_URL_PATH, PHP_URL_HOST)." HTTP/1.1\r\n";
$out .= "Host: ".parse_url($ssl_location, PHP_URL_HOST)."\r\n";
$out .= "Cookie: myauthorization=something";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
Таким образом, это должно в основном передать загрузку ssl стандартному http-соединению, которое инициирует пользователь, вместо перенаправления.
Мой вопрос сейчас: это будет работать?Я что-то пропустил?Есть ли какие-нибудь замечания?
Я думаю, что это будет разумное количество хлопот, включая настройку обратного прокси и все.