XBT vs. Apache |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
XBT vs. Apache |
![]()
Сообщение
#21
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 ![]() |
Вроде бы xbtt можно сообщить какой у пользователя ип вызвав его с дополнительным параметром, типа:
http://10.10.10.10:2710/announce?ip=1.1.1.1& -------------------- |
|
|
![]()
Сообщение
#22
|
|
Участник ![]() ![]() Группа: Пользователи Сообщений: 21 Регистрация: 3.8.2009 Пользователь №: 2 338 ![]() |
у меня nginx проксирует запросы к /st /announce /scrape и /debug на localhost:порт_xbtt
для того, чтобы xbtt можно было передавать ip, запрос должен поступать с 127.0.0.1 на 127.0.0.1. |
|
|
![]()
Сообщение
#23
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 ![]() |
Конфиг покажите...
-------------------- |
|
|
![]()
Сообщение
#24
|
|
Участник ![]() ![]() Группа: Пользователи Сообщений: 21 Регистрация: 3.8.2009 Пользователь №: 2 338 ![]() |
Код server {
listen *:80; server_name retracker.lnetw.ru retracker.local; location @fallback { proxy_pass http://retracker.lnetw.ru:8197; proxy_redirect http://retracker.lnetw.ru:8197/ /; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* ^.+\\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|ico|tgz|tbz|xls|doc|exe|pdf|ppt|txt|tar|mid|midi|wav|wave|bmp|rtf|swf|tiff| log|m3u|flv|xcf|wmv|wma|pls|asf|asx|diff|rpm|deb|xml|xhtml|html|mkv)$ { error_page 400 401 402 403 404 500 501 502 503 = @fallback; root /mnt/s80/pub/retracker.lnetw.ru/www; access_log /mnt/s80/pub/retracker.lnetw.ru/logs/access.log; } location ~* ^/(st|announce|debug|scrape|statistics) { rewrite ^/announce?[^(ip=)]*(.*)$ /announce?ip=$ip_r$1 break; proxy_pass http://127.0.0.1:7717; proxy_redirect http://127.0.0.1:7717/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $ip_r; proxy_set_header X-Real-IP $ip_r; } location / { proxy_pass http://retracker.lnetw.ru:8197; proxy_redirect http://retracker.lnetw.ru:8197/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } } |
|
|
![]()
Сообщение
#25
|
|
Участник ![]() ![]() Группа: Пользователи Сообщений: 21 Регистрация: 3.8.2009 Пользователь №: 2 338 ![]() |
ах да, по-поводу переменной $ip_r
Код perl_set $ip_r ' это мои локальные костыли
sub { my $r=shift; my $sa=$r->variable("server_addr"); my $ra=$r->remote_addr; $ra=~ s/192.168.22.2/$sa/; return $ra; } '; |
|
|
![]()
Сообщение
#26
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 ![]() |
Перед блоком
Код location ~* ^/(st|announce|debug|scrape|statistics) { поставьте вот такой Код if ( $request_uri !~* "^/announce?\?ip=.*" ) { rewrite .* /announce?ip=$remote_addr&$args break; } Это шаманство в топку: Код rewrite ^/announce?[^(ip=)]*(.*)$ /announce?ip=$ip_r$1 break; P.S.: Конкретно в вашей конфигурации он не заработает, но при должной модификации всё заведётся. Принцип такой - сначала подготовить URL с параметрами, а потом отправлять на проксирование. UPD: Хотя в вашем случае всётаки if придётся поместить в location но проверку на announce лучше отделить от остальных Вот так попробуйте Код location ~* ^/announce {
if ( $request_uri !~* ".*\?ip=.*" ) { rewrite .* /announce?ip=$remote_addr&$args break; } proxy_pass http://127.0.0.1:7717; proxy_redirect http://127.0.0.1:7717/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $ip_r; proxy_set_header X-Real-IP $ip_r; } -------------------- |
|
|
![]()
Сообщение
#27
|
|
Участник ![]() ![]() Группа: Пользователи Сообщений: 21 Регистрация: 3.8.2009 Пользователь №: 2 338 ![]() |
в конкретно моём случае всё сделано замечательно. $remote_addr я не использую по той простой причине, что если запрос поступет изнутри моей локальной сети (а сервер является ещё и гейтом для моей локалки), то xbtt передаётся неправильный ip, для того $ip_r и сделана.
далее - отдельный локейшн только для /announce? нахрена? про все if'ы Сысоев довольно однозначно выразился, почитайте, именно поэтому сделано не if'ом, а вот таким вот реврайтом. |
|
|
![]()
Сообщение
#28
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 ![]() |
Тогда в чём проблема? Вы говорите что не работает, я вам предлагаю вариант, отличный от вашего, а на это отвечаете "танунафиг".
Про if-ы в курсе и тем не менее... Про $remote_addr - я думал вы сами догадаетесь заменить его, просто так наглядней... UPD: Про отделный location для announce - а разве на других страницах необходим IP пользователя? Так зачем делать ненужный rewrite тогда? спички... -------------------- |
|
|
![]()
Сообщение
#29
|
|
Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 30 Регистрация: 6.10.2009 Пользователь №: 2 900 ![]() |
пробую ещё один вариант:
на фре по статье лиса собрал джаил и повесил его на отдельный ип (дабы не занимать порты и не строить редиректы), там себе вертяца пару демонов, в том числе XBT, MySQL, ну и ссх, итп, для поддержки "реальности" машины, надеюсь спасёт. |
|
|
![]()
Сообщение
#30
|
|
Новичок ![]() Группа: Пользователи Сообщений: 1 Регистрация: 1.12.2009 Пользователь №: 3 579 ![]() |
Подскажите как подружить XBT c DLE на деневре, чтобы работал http://retracker.local/announce
с реврайтом не получаеться [code]DirectoryIndex index.php RewriteEngine On # DLE RewriteRule ^announce(/?)+$ /announce.php [L][code] |
|
|
![]()
Сообщение
#31
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 ![]() |
Apache под рукой нет поэтому попробуйте изучить документацию по mod_rewrite.
-------------------- |
|
|
![]()
Сообщение
#32
|
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 21.11.2009 Пользователь №: 3 425 ![]() |
Сделал так, все работает, но в клиенте иногда не показаны сидеры и личеры, почему, кто поможет?
Redirect permanent /announce.php http://ип:2710/announce Redirect permanent /announce http://ип:2710/announce |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2024, 6:31 |