ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bitrix rewrites] Нужна помощь


  • To: nginx-ru@xxxxxxxxx
  • Subject: [Bitrix rewrites] Нужна помощь
  • From: Anton Koldaev <koldaevav@xxxxxxxxx>
  • Date: Fri, 10 Sep 2010 02:28:31 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:from:date :message-id:subject:to:content-type; bh=KuTIw58wvTEziqFpEHt3Ycyfv/felokWn/ed7gBhoag=; b=emjK5Qkufm3qD1IdHtgQl8pNFZX3M8f09tfGFYsNsnCGFKiX1OufoICsuilpa9uKsG 2RbUGMrqMwIwa/qL7KDi9c9+VV6ArcDZsE9omkUDX0GPmC9N0sz4qeJnyMmcqCanXgGn W2CqnLuEAbZ0BVIUzJOTM5Ob+032onMAtVyPI=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=KNqwMpGHPfkiWIFoRl0bTLT6fAI/LyPxj/7vkeV72Q4lnha3pZ2Ke5yG0pScE1i4jx otlKVKElOwaYv6Ukq0hbwDDj3qdy7a+wNe8CXmA+pasVkaTBAxfhUb+u+1PCo8zAuiVX V724Drkb01uxJ/s0oSycRtTX18xchs6ECBspo=

Приветствую
Нужна помощь с настройкой непростой схемы рерайтов для Bitrix(Битрикс Управление сайтом).

Cайт mysite.ru пытаюсь перенести с nginx+Apache2 на nginx+php5-fpm(5.3.2).

Вот реврайты из корневого .htaccess


  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d    
  RewriteRule ^(.*)([^/])$ $1$2/ [R,L]


  RewriteCond %{ENV:REDIRECT_RDR} ^$
  RewriteCond %{HTTP_HOST} ^(.+)\.mysite\.ru$
  RewriteCond %{HTTP_HOST} !^www\.mysite\.ru$
  RewriteRule ^([a-zA-Z0-9`~!@#$%^&()\-+";=\\/|]*)$ blogs/fake/%2/$1 [L,E=RDR:1]
 
 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/urlrewriteprepend.php$
  RewriteRule ^(.*)$ /urlrewriteprepend.php [L]


Мой конфиг с комментариями
server {
  listen 1.1.1.1:80;

  # Опечатки в написании сайта
  server_name mysait.com;
  server_name *.mysait.com;

  rewrite ^(.*) http://www.mysite.ru$1 permanent;
}

server {
  listen 1.1.1.1:80;

  server_name www.mysite.ru;
  # Исключаем тестовые поддомены, находящиеся на другом сервере.
  server_name ~(?<!^test1|^test2|^test3)\.mysite\.ru$;
  set $subserver $1;

  access_log /var/log/nginx/mysite.ru.access.log;
  error_log /var/log/nginx/mysite.ru.error.log info;
  rewrite_log on;

  root /var/www/mysite.ru;
  index index.php index.phtml index.html index.htm;
  sendfile on;

  # На всех поддоменах кроме www делаем реврайт для обработки блогов.
  if ($host ~* (?<!^www)\.mysite\.ru) {
    rewrite ^/([-a-zA-Z0-9`~!@#$%^&()\+"\;=\/|]*)$ /blogs/fake$subserver/$1;
  }

    # Файлов по путям /blogs/fake$subserver/$1 нету, несуществующие файлы будет обрабатывать скрипт urlrewriteprepend.php
    # Он в свою очередь обрабатывает полученное значение $_SERVER['HTTP_HOST'], для дальнейшего пропихивыния на urlrewrite.php(это уже стандартный битриксовский)
  location / {
     if (!-e $request_filename) {
        rewrite ^(.*)$ /urlrewriteprepend.php last;
     }
  }

  location ~ \.(php|php4|php5|phtml)$ {
    try_files $fastcgi_script_name =404;

    fastcgi_pass 127.0.0.1:9000;
        .......fastcgi_params..........
    }
}

Суть проблемы
На всех страницах висит _javascript_-авторизация. Когда авторизуюсь с главной страницы(с домена www.mysite.ru), то авторизация проходит успешно, появляется панель управления битрикса, logout тоже происходит успешно, всё ок. Когда же я авторизуюсь с любого из поддоменов вида blog1.mysite.ru, то авторизация проходит успешно, а вот logout отдает 404, собственно которой прописан первой строкой в локейшене php-шек.
Вопрос: как наладить Logout с поддоменов?

Дополнительная информация

Как происходит на практике(взято из rewrite-логов):
1. Заходим на сайт mysite.ru => редирект на www.mysite.ru
2. Идем на поддомен по ссылке http://blog1.mysite.ru/
=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://www.mysite.ru/"
=> "^/([-a-zA-Z0-9`~!@#$%^&()\+"\;=\/|]*)$" matches "/", server: www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://www.mysite.ru/"
==> rewritten data: "/blogs/fake/", args: "", server: www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://www.mysite.ru/"

### Здесь скрипты urlrewriteprepend+urlrewrite обрабатывают линк ###
=> "^(.*)$" matches "/blogs/fake/", server: www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://www.mysite.ru/"
==> rewritten data: "/urlrewriteprepend.php", args: "", server: www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://www.mysite.ru/"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", , server: www.mysite.ru, request: "GET /upload/rk/85a/mysite_240x400.swf?flash_link=%2Fbitrix%2Frk.php HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"

Вуаля, открывается нужный блог, всё ок.

Лог авторизации с поддомена(авторизация проходит успешно)
=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "POST /auth.php HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /bitrix/js/main/utils.js?1264068828 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /bitrix/js/main/admin_tools.js?1264068828 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /bitrix/js/main/popup_menu.js?1260266311 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /bitrix/js/main/public_tools.js?1264068828 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /bitrix/themes/.default/pubstyles.css?1260779398 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /bitrix/themes/.default/jspopup.css?1260266310 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /upload/rk/85a/mysite_240x400.swf?flash_link=%2Fbitrix%2Frk.php HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"

Лог при неудачном Logout-е с поддомена
=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru, request: "GET /blogs/blog1/index.php?logout=yes&CODE=blog1 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"

=> "^/([-a-zA-Z0-9`~!@#$%^&()\+"\;=\/|]*)$" does not match "/blogs/blog1/index.php", server: www.mysite.ru, request: "GET /blogs/blog1/index.php?logout=yes&CODE=blog1 HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"

access.log:
== "GET /blogs/blog1/index.php?logout=yes&CODE=blog1 HTTP/1.1" 404 143 "http://blog1.mysite.ru/"


--
Best regards,
Koldaev Anton
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.