Страницы

Поиск по вопросам

Показаны сообщения с ярлыком прокси. Показать все сообщения
Показаны сообщения с ярлыком прокси. Показать все сообщения

четверг, 13 февраля 2020 г.

Написание прокси-сервера для чайника

#сервер #proxy #кэширование #прокси


В прошлом вопросе (Вопрос) я выяснил , что для запроса погоды мне нужен прокси сервер,
который будет кэшировать данные с погодного сервера. Писать сервер придется мне самому,
но до этого ни с чем подобным не сталкивался (серверной частью). Писать решил на python
3. Можете ли ткнуть в литературу или дать ссылки как можно реализовать такой кэширующий
сервер, и правильно ли я вообще выбрал python?
    


Ответы

Ответ 1



«По-науке» эта конструкция называется «Обратный прокси» (reverse proxy). У вас есть некоторый backend-сервер, который генерирует какие-то полезные данные, и есть frontend-сервер, который кеширует на себе редкоизменяемые данные. Такая схема чаще используется, для кеширования локальных ресурсов какого-нибудь сайта, чтобы не гонять данные лишний раз, через основной backend-сервер. В вашем случае backend-сервером будет погодный сервер. Если, логику формирования запросов клиенты возьмут на себя, то проще будет использовать некий уже готовый и отлаженный web-сервер. В принципе, тут подойдет любой (nginx, lighttpd, apache, Ваш собственный). Чаще всего для таких целей используют nginx. Он весьма шустр и достаточно прост в настройке. Вот, например, настройки для nginx: http://reviewsignal.com/blog/2013/08/29/reverse-proxy-and-cache-server-with-nginx/ http://ashep.org/2011/nginx-obratnyj-proksi-server/#.V6ECut_XfmE Официальная документация: https://www.nginx.com/blog/nginx-caching-guide/ В итоге у вас получится что-то вроде: events { worker_connections 8096; multi_accept on; use epoll; } http { proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache:60m max_size=1G; server { listen 80; server_name your-proxy-server-name.com; location / { proxy_pass http://any-weather-server.com; proxy_redirect off; proxy_set_header Host $host; proxy_cache STATIC; proxy_cache_valid 200 1d; proxy_cache_use_stale error timeout invalid_header updating \ http_500 http_502 http_503 http_504; } } } Тут надо будет внимательно отнестись к заголовкам, которые ожидает сервер погоды от вас. Вероятно, вам придется немножко поколдовать с proxy_ignore_headers proxy_hide_headers proxy_set_headers Подобную проблему обсуждают тут: https://stackoverflow.com/questions/9230812/nginx-as-cache-proxy-not-caching-anything Заголовки, вам придется настраивать в любом случае, в том числе и если frontend-сервер будете писать сами. Если писать самому, я думаю, было бы проще найти некоторое готовое решение, и его переиспользовать. Например, достаточно просто это сделать с помощью tornado. А в качестве кеша использовать наример memcached или redis. https://stackoverflow.com/questions/16524545/how-to-write-a-web-proxy-in-python

воскресенье, 15 декабря 2019 г.

Как работать с svn через HTTP прокси на Ubuntu?

#http #svn #прокси


При попытке извлечения кода svn выдает следующую ошибку:  

svn: OPTIONS of 'http://...': Не удалось разрешить имя хоста `...': 
Host not found (http://...)

    


Ответы

Ответ 1



Нужно прописать параметры прокси в настройках svn. sudo nano /etc/subversion/servers [global] http-proxy-host = defaultproxy.whatever.com http-proxy-port = 7000

понедельник, 22 апреля 2019 г.

Написание прокси-сервера для чайника

В прошлом вопросе (Вопрос) я выяснил , что для запроса погоды мне нужен прокси сервер, который будет кэшировать данные с погодного сервера. Писать сервер придется мне самому, но до этого ни с чем подобным не сталкивался (серверной частью). Писать решил на python 3. Можете ли ткнуть в литературу или дать ссылки как можно реализовать такой кэширующий сервер, и правильно ли я вообще выбрал python?


Ответ

«По-науке» эта конструкция называется «Обратный прокси» (reverse proxy). У вас есть некоторый backend-сервер, который генерирует какие-то полезные данные, и есть frontend-сервер, который кеширует на себе редкоизменяемые данные. Такая схема чаще используется, для кеширования локальных ресурсов какого-нибудь сайта, чтобы не гонять данные лишний раз, через основной backend-сервер.
В вашем случае backend-сервером будет погодный сервер.
Если, логику формирования запросов клиенты возьмут на себя, то проще будет использовать некий уже готовый и отлаженный web-сервер. В принципе, тут подойдет любой (nginx, lighttpd, apache, Ваш собственный). Чаще всего для таких целей используют nginx. Он весьма шустр и достаточно прост в настройке.
Вот, например, настройки для nginx
http://reviewsignal.com/blog/2013/08/29/reverse-proxy-and-cache-server-with-nginx/
http://ashep.org/2011/nginx-obratnyj-proksi-server/#.V6ECut_XfmE
Официальная документация:
https://www.nginx.com/blog/nginx-caching-guide/
В итоге у вас получится что-то вроде:
events { worker_connections 8096; multi_accept on; use epoll; }
http {
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache:60m max_size=1G;
server { listen 80; server_name your-proxy-server-name.com;
location / { proxy_pass http://any-weather-server.com; proxy_redirect off; proxy_set_header Host $host; proxy_cache STATIC; proxy_cache_valid 200 1d; proxy_cache_use_stale error timeout invalid_header updating \ http_500 http_502 http_503 http_504; } } }
Тут надо будет внимательно отнестись к заголовкам, которые ожидает сервер погоды от вас. Вероятно, вам придется немножко поколдовать с
proxy_ignore_headers proxy_hide_headers proxy_set_headers
Подобную проблему обсуждают тут:
https://stackoverflow.com/questions/9230812/nginx-as-cache-proxy-not-caching-anything
Заголовки, вам придется настраивать в любом случае, в том числе и если frontend-сервер будете писать сами.

Если писать самому, я думаю, было бы проще найти некоторое готовое решение, и его переиспользовать. Например, достаточно просто это сделать с помощью tornado. А в качестве кеша использовать наример memcached или redis
https://stackoverflow.com/questions/16524545/how-to-write-a-web-proxy-in-python

суббота, 16 марта 2019 г.

Как работать с svn через HTTP прокси на Ubuntu?

При попытке извлечения кода svn выдает следующую ошибку:
svn: OPTIONS of 'http://...': Не удалось разрешить имя хоста `...': Host not found (http://...)


Ответ

Нужно прописать параметры прокси в настройках svn. sudo nano /etc/subversion/servers [global] http-proxy-host = defaultproxy.whatever.com http-proxy-port = 7000