Белый список nginx proxy_pass $args

У меня nginx настроен на запросы прокси:

server  {
    listen      80;
    server_name proxy.mydomain.com;

    location /proxy {
        resolver 8.8.8.8;
        proxy_pass $args/;
    }
}

Поэтому я могу сделать запрос как: http://proxy.mydomain.com/proxy?http://www.test.com

Я хотел бы контролировать, какой домен может быть прокси. Я не знаю, как это сделать без if.

1 ответ

Я использую / вместо ?, чтобы прокси www.test.com/xyz, это было бы http://proxy.mydomain.com/proxy/www.test.com/xyz

server {
    listen 80;
    server_name proxy.mydomain.com;

    location ~ ^/proxy/(?<proxy_host>[^/]+)/(?<proxy_path>.+)$ {
        proxy_pass http://$proxy_host/$proxy_path?$args;
    }
}
Другие вопросы по тегам