Curl: прокси-сервер для локального хоста
Я под прокси-сервером, и если я попробую curl http://localhost/mysite
или curl http://127.0.0.1/mysite
curl попытаться разрешить его с помощью прокси-сервера. Поэтому я попытался с параметром --noproxy
, но не работает. Работает нормально для внешних серверов с прокси-сервером как curl http://mysite.com
.
Моя конфигурация:
- Cygwin (bash) под Windows 8 с расширением curl.
- Прокси:
proxy.domain.xx:1080
без аутентификации
-
http_proxy=http://proxy.domain.xx:1080
- Локальный сервер: версия XAMP 1.8.0
- Порты Apache: 80,443
- Браузер: Chrome с прокси, но настроенный для доступа к
localhost
и *.dev
Из curl --help
- noproxy: список узлов, которые не используют прокси-сервер
Что я пробовал:
- Я отключил брандмауэр и ничего
-
$ curl -v http://localhost/mysite
→ Отладка:
ответ
Connected to proxy.domain.xx (200.55.xxx.xx) port 1080 (#0)
GET http://localhost/mysite HTTP/1.1
User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
Host: localhost
Accept: */*
Proxy-Connection: Keep-Alive
The system returned: <PRE><I>(111) Connection refused</I></PRE>
-
curl -v --noproxy localhost, http://localhost/muestra
ответ
About to connect() to localhost port 80 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /mysite HTTP/1.1
> User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
> Host: localhost
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4
< Location: http://localhost/mysite
< Content-Length: 331
< Content-Type: text/html; charset=iso-8859-1
Любая идея, как это исправить?
Ответы
Ответ 1
После
curl -v --noproxy localhost, http://localhost/muestra
завиток ответил
About to connect() to localhost port 80 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 80 (#0)
Поэтому он четко заявил, что он подключен к локальному хосту.
Ответ 2
использовать
curl -v --noproxy '*' http://abc.com
чтобы полностью отключить прокси.
или если вы хотите отключить прокси только для адресата abc.com
curl -v --noproxy "abc.com" http://abc.com
где abc.com - это URL, который вы хотите отправить
Ответ 3
Как говорили некоторые другие, параметры --noproxy
- это то, что вы ищете.
https://curl.haxx.se/docs/manpage.html#--noproxy
По-видимому, второй запрос, который вы попробовали, получал ответ HTTP 301, поэтому вы, вероятно, также захотите использовать опцию -L
для отслеживания перенаправления:
https://curl.haxx.se/docs/manpage.html#-L
Вы можете псевдоним curl всегда игнорировать прокси для запросов localhost.
alias curl='curl --noproxy localhost,127.0.0.1'
Добавьте его в свой .bashrc файл для удобства:
echo "alias curl='curl --noproxy localhost,127.0.0.1'" >> ~/.bashrc
Ответ 4
В Windows для работы с локальным хостом работала следующая опция.
curl --proxy "--location http://127.0.0.1:8983
Ответ 5
Curl ожидает, что порт будет указан с прокси-сервером, это решение сработало для меня
export http_proxy = "http://myproxy: 80"
Ответ 6
Опция --noproxy
должна работать (и, как объяснялись предыдущие ответы), я думаю, что вы должны атаковать ядро проблемы.
Ваш прокси не игнорирует ваш локальный адрес, а не только curl
. Idk, если это работает в каждой среде (я довольно новичок в Linux), но если вы используете gnome, это должно сработать.
Тип 'env | grep proxy "в терминале, это должно дать вам все настроенные прокси. Важным является" no_proxy".
Чтобы добавить запись, откройте "~/.bash_profile" в своем любимом текстовом редакторе и добавьте строку
'No_proxy = $no_proxy,'
в конце.
Перезагрузите конфигурацию с помощью 'source ~/.bash_profile'.
Если вы хотите, чтобы это повлияло на каждого пользователя, измените файл "/etc/profile".
Ответ 7
В качестве обходного пути вы можете просто сбросить переменную http_proxy перед запуском curl без опции --noproxy.
Ответ 8
попробуй ниже, чтобы обойти прокси сервис для локальных ips
export no_proxy=localhost,127.0.0.1