Я столкнулся с той же проблемой, и оказалось, что busybox требователен к формату resolv.conf. Для работы nslookup между тегом сервера имен и адресом должен быть ровно один пробел. Кроме того, /etc/nsswitch.conf должен включать DNS для хоста.
[мастер busybox (git hash 349d72c19 )sysroot -glibc -linaro -2.25 -2018.05 -arm -linux -gnueabihf ]
root@4000000a:~# cat /etc/nsswitch.conf
passwd: files compat
shadow: files compat
hosts: files dns compat
Да, вопрос старый, но текущий busybox по-прежнему ведет себя так.
[Я использовал xxd ниже, чтобы показать количество пробелов в resolv.conf]
Это не удается:
root@4000000a:~# xxd /etc/resolv.conf
00000000: 6e61 6d65 7365 7276 6572 2020 382e 382e nameserver 8.8.
00000010: 382e 380a 8.8.
root@4000000a:~# nslookup www.cnn.com
nslookup: bad address ' 8.8.8.8'
и это работает:
root@4000000a:~# xxd /etc/resolv.conf
00000000: 6e61 6d65 7365 7276 6572 2038 2e38 2e38 nameserver 8.8.8
00000010: 2e38 0a .8.
root@4000000a:~# nslookup www.cnn.com
Server: 8.8.8.8
Address: 8.8.8.8:53
Non-authoritative answer:
www.cnn.com canonical name = turner-tls.map.fastly.net
Name: turner-tls.map.fastly.net
Address: 151.101.1.67
Name: turner-tls.map.fastly.net
Address: 151.101.65.67
Name: turner-tls.map.fastly.net
Address: 151.101.129.67
Name: turner-tls.map.fastly.net
Address: 151.101.193.67
Non-authoritative answer:
www.cnn.com canonical name = turner-tls.map.fastly.net
Name: turner-tls.map.fastly.net
Address: 2a04:4e42::323
Name: turner-tls.map.fastly.net
Address: 2a04:4e42:200::323
Name: turner-tls.map.fastly.net
Address: 2a04:4e42:400::323
Name: turner-tls.map.fastly.net
Address: 2a04:4e42:600::323
Установите nginx и язык сценариев njs, прочитайте инструкции по установке:nginx :Пакеты Linux . Обязательно сначала сделайте резервную копию вашей конфигурации.
Минимальные шаги для установки nginx
и пакета nginx-module-njs
из стабильного репозитория nginx.org в Debian в качестве примера:
echo "deb http://nginx.org/packages/debian $(lsb_release -cs) nginx" |
sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo apt update
sudo apt install nginx nginx-module-njs
Добавьте строку
load_module modules/ngx_http_js_module.so;
в основную конфигурацию(nginx.conf
).
Создайте файл http.js
в каталоге конфигурации nginx со следующим содержимым:
function decoded_target_url(r) {
return decodeURIComponent(r.args.target_url);
}
export default {decoded_target_url};
Измените конфигурацию по умолчанию на эту:
js_import http.js;
js_set $decoded_target_url http.decoded_target_url;
server {
#... more stuff
default_type text/html;
location /redirect/ {
return 307 $decoded_target_url;
}
#... more stuff
}
Запустите nginx -t
, чтобы проверить конфигурацию и перезапустить сервер.
Вам необходимо добавить протокол(http://
илиhttps://
)в параметр запроса, например.
mylocalserver.com/redirect/?target_url=http%3A%2F%2Fexample.com%2F%3Fx%3Dy%26z%3Dk
или изменить
return 307 $decoded_target_url
на жестко заданный
return 307 http://$decoded_target_url
или
return 307 https://$decoded_target_url
Связанные документы: