У меня есть директива местоположения, такая как:
location ~ \/proxy\/(.+) {
proxy_set_header HOST $host;
proxy_pass http://$1;
}
И я хочу, чтобы она проходила только для некоторых из моего белого списка или моих сценариев, полного адреса URL.
И у меня нет идеи как это сделать.
Я перенаправляю на этот адрес из моего php скрипта. Так что в моем php скрипте я перенаправляю, например, на localhost/proxy/google.com
.
, и он попадает в эту директиву местоположения, которая затем переходит на http://google.com
.
Я думал об ограничении этого (белого списка) проверка файлов. Например,
if (!-f $document_root/$1)
{
return 404;
}
И это нормально, но ... Я не могу создать каждое имя файла в системе.
Например, somehackysite.com:5292/page.php?w=525;
.
Система не позволят мне даже создать файл с этим именем.
Я думал о имени файла md5 и в nginx делал md5 из $1
и проверял ... но не смог найти по inte rnet что-нибудь об этом. Я сомневаюсь, что это даже возможно.
Просто
Я хочу каким-то образом ограничить его, чтобы я мог внести в белый список полные URL-адреса, которые можно проксировать таким образом, используя эту директиву местоположения, поэтому пользователи те, кто знает, как это делается, не смогут создавать свои собственные URL-адреса и использовать их с этим прокси-сервером, потому что он не будет работать.
Поэтому мой вопрос можно коротко сформулировать так:
Как можно Я делаю белый список, используя nginx в местоположении к моему proxy_pass, чтобы я мог перечислить все URL, которые можно использовать с этим местоположением, и proxy_pass и отклонить их, которые не могут?
Мне нужно что-то подобное, потому что там будет много URL-адресов, и сценарий php (например, /proxy.php
создаст их (так тоже разрешите) и перенаправит на /proxy/...
, который обрабатывается nginx и директивой размещения