Я застрял с настройкой экземпляра Nginx, встроенного в контейнер Docker, который должен реализовывать динамический обратный прокси-сервер для не включенных веб-сайтов CORS.
Я ожидал, что это простая задача, но она не работает при некоторых условиях. Это рабочий блок местоположения:
location ~* ^/proxy/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass https://google.com;
}
Эта конфигурация работает. Страница Google появляется. Так что, похоже, Docker может разрешить имя Google.
Эта конфигурация (которая мне более интересна) не работает:
location ~* ^/proxy/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://$1$is_args$args;
}
Кажется, что Docker не может разрешить имя, извлеченное первой группой регулярных выражений.
Если я добавлю в блок местоположения директиву resolver, она начнет работать.
location ~* ^/proxy/(.*) {
resolver 192.168.31.2;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://$1$is_args$args;
}
Так в чем же разница? Зачем нужна директива решателя? Почему в первом случае (если имя пути прокси задано жестко) все работает, а во втором - нет? Нужно ли использовать файл resolv.conf внутри самого контейнера?
Я также пытался создать контейнер, передающий параметр - dns , но все еще не работающий.
Идеи?
Спасибо,
Fb