(02-02-2015 02:44)Quasus писал(а): Прокси-сервер может это делать?
Это по определению работа прокси-сервера.
(03-02-2015 06:33)Quasus писал(а): В принципе, прокси-сервер чем отличается от веб-сервера + веб-клиента? Получается, что для веб-сервера домен фиксирован, а для прокси - нет. В принципе, на основе веб-сервера можно сделать прокси?
Домен и для веб-сервера не фиксирован. При обычном запросе (скажем, на example.org/slon) браузер берёт домен, определяет, к какому IP-адресу он относится, и посылает по этому IP-адресу не только путь (
GET /slon HTTP/1.1
), но и домен (
Host example.org
).
Когда-то давно заголовок
Host
не посылался, и в результате на одном IP-адресе можно было разместить не больше одного домена. А сейчас благодать: можно хостить несколько сайтов с разными доменами на одном сервере. Это называется virtual hosts.
Кроме того, результат в том, что никакого дополнительного API по сути не нужно. Нужно просто, чтобы браузер посылал все запросы не на IP сервера, а на IP прокси-сервера, а всё остальное (путь и домен) уже есть в заголовке! То есть когда ты включаешь прокси-сервер (в моём Firefox’е Edit → Preferences, там Advanced → Network → Settings..., там Manual proxy configuration), ты указываешь именно это: что браузер должен посылать запросы не на IP, соответствующий домену, а на указанный тобой сервер и с указанным портом (скорее всего у тебя это будет localhost и какой-то произвольный незанятый порт). А дальше уже прокси-сервер действует по тому же протоколу.
Единственное дополнение в протокол —
поле X-Forwarded-For. Если прокси-сервер хочет передать, что «я вообще-то прокси, на самом деле IP такой», то он может использовать это поле. Но для наших целей это не обязательно.
Вообще, готовые прокси-серверы для кастомизации должны быть. Но я как-то не разбирался. Если найдёшь что интересное — расскажи, пожалуйста.
(03-02-2015 06:33)Quasus писал(а): В принципе, прокси-сервер чем отличается от веб-сервера + веб-клиента?
Ничем.