Есть ли какая то дока по композиту со стороны JavaScript?
В частности интересует проверка в каком режиме отработала страница, в композитном или обычном. Данный параметр нужен для проверки необходимости ожидания необходимого блока на композите, или уже можно после загрузки страницы сразу работать с блоком. Приходится использовать событие onFrameDataReceived, но оно не отрабатывает если композита не было, а итоге если пишешь код внутрь onFrameDataReceived, то работает только на композите, если вне, то не работает на композите.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Руслан Манаенко написал: А какие еще условия могут тут быть?
На это есть целый курс у Битрикса. Файлы та создаются для начала в /bitrix/html_pages/сайт ? Если их там нет, то и nginx нечего отдавать. Мониторить удобнее по access логам nginx и апача. Поставить tail -f + grep свой IP и смотреть проходит хит в апач или нет
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Руслан Манаенко написал: на сколько я понял это для того чтобы nginx проверял есть ли закешированая страница в композите и отдает сразу html в котором нет php. (т.е. без отработки Апача) верно?
Да, что именно не отрабатывает? Как тестируете? Там масса условий чтобы отработало.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Благодаря такой конструкции я долго ловил странную багу, по одному URL упорно сервак выдавал 403 Forbidden. URL был вида: /catalog/section1/section2/asvn/ Правило отлично кушало этот кусок "asvn" и выдавало 403. Подстава жесткая, так можно запустить проект, и только через пару лет обнаружить, что несколько URL на проекте не работают из-за этого бага.
Наработал свой вариант конфига, выкладываю на обсуждение. Адаптировал переменные под Виртуалу битрикса и слил конфиг с битриксовыми директивами: из /etc/nginx/bx/conf/bitrix.conf Для работы надо заменить в директиве server строку: include bx/conf/bitrix.conf; на include bx/conf/bitrix-composite.conf;
Сам /etc/nginx/bx/conf/bitrix-composite.conf
Код
# Assign error handler
include bx/conf/errors.conf;
# Include im subscrider handlers
include bx/conf/im_subscrider.conf;
# Deny external access to critical areas
location ~ /\.ht { deny all; }
#location ~ (.*)/\.htaccess/(.*)$ { deny all; }
location ~ /\.hg { deny all; }
location ~ /.svn/ { deny all; }
location ~ /.git/ { deny all; }
location ^~ /bitrix/modules { deny all; }
location ^~ /bitrix/local_cache { deny all; }
location ^~ /bitrix/stack_cache { deny all; }
location ^~ /bitrix/managed_cache { deny all; }
location ^~ /bitrix/php_interface { deny all; }
location ^~ /upload/support/not_image { internal; }
location ~* /upload/1c_(.*)/(.*) { deny all; }
# player options, disable no-sniff
location ~* ^/bitrix/components/bitrix/player/mediaplayer/player$ {
add_header Access-Control-Allow-Origin *;
}
# process dav request on
# main company
# extranet
# additional departments
# locations that ends with / => directly to apache
location ~ ^(/[^/]+)?(/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user|/mobile/webdav|/contacts/personal).*/$ {
proxy_pass $proxyserver;
}
# add / to request
location ~ ^(/[^/]+)?(/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user|/mobile/webdav|/contacts/personal) {
set $addslash "";
if (-d $request_filename) { set $addslash "${addslash}Y"; }
if ($is_args != '?') { set $addslash "${addslash}Y"; }
if ($addslash = "YY" ) { proxy_pass $proxyserver$request_uri/; }
proxy_pass $proxyserver;
}
# Deny cache access to anyone except for merged CSS files and JS files
location ^~ /bitrix/cache { deny all; }
location ^~ /bitrix/cache/css/ {
location ~* ^.+.(css)$ { expires 30d; error_page 404 /404.html; }
location ~* .*$ { deny all; }
}
location ^~ /bitrix/cache/js/ {
location ~* ^.+.(js)$ { expires 30d; error_page 404 /404.html; }
location ~* .*$ { deny all; }
}
# Excange and Outlook
location ~ ^/bitrix/tools/ws_.*/_vti_bin/.*\.asmx$ { proxy_pass $proxyserver; }
# Groupdav
location ^~ /bitrix/groupdav.php { proxy_pass $proxyserver; }
# Static content
location ^~ /upload { expires 30d; error_page 404 /404.html; }
location ^~ /bitrix/images { expires 30d; error_page 404 /404.html; }
location ^~ /bitrix/tmp { expires 30d; error_page 404 /404.html; }
# Use nginx to return static content from s3 cloud storage
location ^~ /upload/bx_cloud_upload/ {
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:]+)\.(s3|s3-us-west-1|s3-eu-west-1|s3-ap-southeast-1|s3-ap-northeast-1)\.amazonaws\.com/(.+)$ {
internal;
resolver 8.8.8.8;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
#proxy_max_temp_file_size 0;
proxy_pass $1://$2.$3.amazonaws.com/$4;
}
location ~* .*$ { deny all; }
}
# Apache server status page
location ^~ /server-status { proxy_pass $proxyserver; }
# Nginx server status page
location ^~ /nginx-status {
stub_status on;
allow 127.0.0.0/24;
deny all;
}
# Bitrix setup script
location ^~ ^(/bitrixsetup\.php)$ { proxy_pass $proxyserver; proxy_buffering off; }
# composite
set $storedAuth "";
set $usecache "";
# check all conditions for enable composite
if ( $http_bx_action_type = "" ) { set $usecache "A"; }
if ( $request_method = "GET" ) { set $usecache "${usecache}B"; }
if ( $cookie_BITRIX_SM_NCC = "" ) { set $usecache "${usecache}C"; }
if ( $http_x_forwarded_scheme !~ "https" ){ set $usecache "${usecache}D"; }
# IE9 and above exclude
modern_browser_value "modern";
modern_browser msie 10.0;
modern_browser unlisted;
if ($modern_browser) {
set $usecache "${usecache}E";
}
# check user auth
if ( $cookie_BITRIX_SM_LOGIN != "" ) { set $storedAuth "A"; }
if ( $cookie_BITRIX_SM_UIDH != "" ) { set $storedAuth "${storedAuth}B"; }
if ( $cookie_BITRIX_SM_CC != "Y" ) { set $storedAuth "${storedAuth}C"; }
if ( $storedAuth !~ "ABC" ) { set $usecache "${usecache}F"; }
## cache location
location ~* @.*\.html$ {
internal;
}
# use default cache file
location / {
# dav processing
if ($request_method ~ ^(PROPFIND|OPTIONS|COPY|MOVE|PROPPATCH|MKCOL|LOCK|UNLOCK|PUT|REPORT|SEARCH|MKCALENDAR)$) { proxy_pass $proxyserver; }
# Error page for static content
if ($request_filename ~* \.(css|js|gif|png|jpg|jpeg|ico|woff)$) {
expires 15d;
error_page 404 /404.html;
break;
}
if ($usecache != "ABCDEF" ) { proxy_pass $proxyserver; }
set $test_file "/bitrix/html_pages/$host$uri/index@$args.html";
try_files $test_file @apache;
}
# use own path to cache file: test_file
location ~* ^(.*)\.php$ {
if ($usecache != "ABCDEF" ) { proxy_pass $proxyserver; }
set $test_file "/bitrix/html_pages/$host$1@$args.html";
try_files $test_file @apache;
}
# apache location
location @apache {
proxy_pass $proxyserver;
}
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Пример в уроке не рабочий. Посмотрел видео, вставил код, закомментив include bx/conf/bitrix.conf; как на видео, результат - да nginx отдает теперь композитную статику сам, но при этом сломались настройки которые были в include bx/conf/bitrix.conf; Например теперь все запросы на статику: картинки, стили, скрипты проваливаются в апач, шикарно! Как то можно уже наконец то выкатить готовый конфиг, который будет без бубна работать с виртуальной машиной битрикса?!
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Общался в ТП по этому вопросу. Сказали что "Дату первой проверки на запуск" использовать не надо, тоесть никогда не указываем, она проставляется системой в случае неуспешного выполнения. ТП долго ковырялось и переписывалось в поиске причины, как то исправили, несколько раз называли разные причины, но вернув эти "причины" обратно агенты все равно продолжали работать, в итоге что ТП сделала я так и не понял.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Та же ерунда, агент никак не хочет запускаться. В доке все написано так мутно, вот например: 1. Зачем нужен datecheck? Есть же next_exec который указывает на дату запуска, смысл не ясен. 2. От какого времени пляшет запускалка агентов? Серверного? PHP? Локальной машины с которой ставится агент? 3. Где можно увидеть лог запусков анентов и понять почему тот или иной не запускается? 4. Что происходит если дата запуска просрочена? Тоесть хит был после или cron задание запустилось позже необходимого времени 5. В доке четко не прописано как тестировать агент, если он не запускается
Сейчас имею проблему, создается агент программно и не запускается:
Код
$date = date("d.m.Y H:i:s", time() + 60);
CAgent::AddAgent(
"Sergey::BPRun(12, '$sJsonDocumentID', '$ResponsibleUser', '$hash');",
"main",
"N",
10,
$date, // дата первой проверки на запуск
"Y",
$date, // дата первого запуска
30);
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Вчера поднимал на другом сервере сайт, nginx конфиг создался, потом плясал с бубном еще час чтобы вручную добавить конфиг httpd и понять почему он не работает.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Проверка безопасности говорит, что "Используется опасная/устаревшая версия PHP". Хотя производитель этой же проверки безопасности нам устанавливает в VM5.0 эту версию php. Где логика?
Вторая проблема это "Apache Content Negotiation разрешен в директории хранения загружаемых файлов". Все на том же VM5.0, рекомендации выше всяких похвал: "Корректно настроить веб-сервер"
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Я пишу о том, что он лишний по своей сути, если нет динамических компонентов. То есть все шаблоны $this->setFrameMode(true), без динамики. У меня страница, там одна статика, но динамический запрос делает. Я понимаю, что может быть внутри есть в этом потребность. Но выглядит это не логичным.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Кстати когда тестировал композит удивило наличие второго хита в случае, если на странице нет динамических компонентов. Вопрос к разработчикам композита: зачем делать второй динамический хит, если динамических данных (компонентов) на странице нет?
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
В настройках nginx учтен новый функционал - Композитный сайт? Протестировал у меня хиты повторные все равно прорываются в апач, не кэшируется html со стороны nginx. Получается, когда раньше на одну страничку был 1 хит к апачу, теперь с композитом получаем два.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro