Ответ 1
Если вы правильно поняли, что хотите настроить резервный прокси для своих изображений EG, ваша система загрузит изображения в браузер, чтобы они могли их отображать, и вы не хотите, чтобы пользователи знали ваш путь/вы не хотите, чтобы общественность доступ на чтение на вашем ковше.
Если это так, вы можете использовать следующий код для загрузки файла через
$result = $client->getObject(array(
'Bucket' => $bucket,
'Key' => $keyname
));
header("Content-Type: {$result['ContentType']}");
echo $result['Body'];
это можно затем настроить на определенном URL-адресе с ключом в качестве параметра или если ваше ведро правильно защищено, вы можете просто использовать имя ключа через GET EG URL image.php?key=some/key/on/aws.jpg
и используйте $keyname = $_GET['key']
внутри вашего файла.
Если вы используете таблицу MySQL для использования поиска, это будет $id = $_GET['id'];
и создайте функцию, которая защищает от SQL Injection и возвращает столбец key
затем использовать это для вашего $keyname
таблица будет $keyname
и которая может быть задана таблицей базы данных сопоставления EG
CREATE TABLE 'proxy_map'(
'id' INT(11) NOT NULL PRIMARY KEY,
'key' TEXT NOT NULL
)
Если вы хотите ограничить его, чтобы использовать только этот конкретный сайт, вы можете использовать проверку реферера
$url = parse_url($_SERVER['HTTP_REFERER'] , PHP_URL_HOST);
if($url !== $_SERVER[HTTP_HOST]){ // assuming that the images are only loaded on the same site as this php script
http_response_code(404);
echo "<h1>File Not Found</h1><p>Sorry the file you were looking for could not be found</p>";
}
Если вы хотите разрешить изображения с набора сайтов EG, у вас есть настройка субдомена, которую вы можете использовать.
$url = parse_url($_SERVER['HTTP_REFERER'] , PHP_URL_HOST);
$allowedDomains = array(
$_SERVER[HTTP_HOST],
"www.example.com"
);
if(!in_array($url, $allowdDomains))