И чо? В каком файле это писать? А если несколько сайтов? А в пятой виртуальной машине уже реализовано по умолчанию?
Поймите, серьезно. У меня 14 серверов. Для меня нет проблемы расковырять настройки nginx.
Но какого черта технологии уже почти год, а для конкретной виртуальной машины нет инструкции? Да, здорово, что есть инструкция на все случаи жизни. Но для конкретной виртуальной машины можно было написать пример целиком?
То же было бы интересно получить инструкцию как настроить композит на BitrixEnv 4.3.4 для всех сайтов на сервере/vps PS: Учитывая что пятая ветка до сих пор не юзабельна, это было бы очень актуально.
Пример в уроке не рабочий. Посмотрел видео, вставил код, закомментив include bx/conf/bitrix.conf; как на видео, результат - да nginx отдает теперь композитную статику сам, но при этом сломались настройки которые были в include bx/conf/bitrix.conf; Например теперь все запросы на статику: картинки, стили, скрипты проваливаются в апач, шикарно! Как то можно уже наконец то выкатить готовый конфиг, который будет без бубна работать с виртуальной машиной битрикса?!
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Наработал свой вариант конфига, выкладываю на обсуждение. Адаптировал переменные под Виртуалу битрикса и слил конфиг с битриксовыми директивами: из /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
PS. Мониторинг можно также включить в админке: Панель управления масштабированием (Настройки - Управление масштабированием - Панель управления) в меню Глобальных действий.
Здорово. Где настраивается email, куда nagios будет отправлять письма об ошибках в пятой версии?
Как имитировать ошибку, чтобы проверить, как нагиос пришлет письмо?
На BitrixEnv 4.2 работало. На BitrixEnv 4.3 не работало, даже когда место полностью заканчивалось на диске. Теперь у меня естественный вопрос к инструменту: как проверить?
Благодаря такой конструкции я долго ловил странную багу, по одному URL упорно сервак выдавал 403 Forbidden. URL был вида: /catalog/section1/section2/asvn/ Правило отлично кушало этот кусок "asvn" и выдавало 403. Подстава жесткая, так можно запустить проект, и только через пару лет обнаружить, что несколько URL на проекте не работают из-за этого бага.
Sergey Pogudin написал: Наработал свой вариант конфига, выкладываю на обсуждение. Адаптировал переменные под Виртуалу битрикса и слил конфиг с битриксовыми директивами: из /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
Код
попробовал Ваш конфиг все равно у меня что-то не отрабатывает ведь на сколько я понял это для того чтобы nginx проверял есть ли закешированая страница в композите и отдает сразу html в котором нет php. (т.е. без отработки Апача) верно?
Интернет магазин энергосберегающих технологий и оборудования - https://artiss.ua
Руслан Манаенко написал: на сколько я понял это для того чтобы nginx проверял есть ли закешированая страница в композите и отдает сразу html в котором нет php. (т.е. без отработки Апача) верно?
Да, что именно не отрабатывает? Как тестируете? Там масса условий чтобы отработало.
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Sergey Pogudin написал: Да, что именно не отрабатывает? Как тестируете? Там масса условий чтобы отработало.
Проверяю так. Захожу на страницу млопосещаемую например "catalog" проверяю внизу значок композита (чтобы страница закешировалась), потом в /catalog/index.php ставлю die('123'); в самом начале и захожу еще раз на каталог. Если вместо страницы вижу белый экран и 123, то отработал апач. Если нет, то это страница из композита и ее отдал nginx... Как то так. А какие еще условия могут тут быть?
Интернет магазин энергосберегающих технологий и оборудования - https://artiss.ua
Руслан Манаенко написал: А какие еще условия могут тут быть?
На это есть целый курс у Битрикса. Файлы та создаются для начала в /bitrix/html_pages/сайт ? Если их там нет, то и nginx нечего отдавать. Мониторить удобнее по access логам nginx и апача. Поставить tail -f + grep свой IP и смотреть проходит хит в апач или нет
Профессиональная разработка сайтов на 1С-Битрикс и администрирование серверов - http://pogudin.pro
Sergey Pogudin написал: ЧПУ пробовали, для начала на обычных текстовых страничках? Хотя у меня и с ЧПУ норм отрабатывает.
хм.. у нас нет обычных страничек все на ЧПУ собрано но для эксперимента можем на локалке попробовать.. что то только не могу понять а какая разница может быть, если он ищет файл композита, то он будет искать на сайте в папке, например: сайт/catalog/podcatalog/podpodcatalog/cached_123123123.html.. и тут совершенно без разницы ЧПУ это или нет по моему.. страница физически есть (кеш) вот только или nginx ее не находит получается или чтото может неправильно настроили.. что делали - это взяли ваш конфиг и прописали в /etc/nginx/bx/site_avaliable/s1.conf и в /etc/nginx/bx/site_avaliable/ssl.s1.conf - include bx/conf/bitrix-composite.conf и все.. может мы чтото упустили?
Интернет магазин энергосберегающих технологий и оборудования - https://artiss.ua