Nginx location - разрешить только полный список адресов URL из белого списка - PullRequest
0 голосов
/ 21 января 2020

У меня есть директива местоположения, такая как:

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 и директивой размещения

...