Задать вопрос
  • Nginx proxypass cache и php, как правильно настроить?

    shambler81
    @shambler81 Куратор тега Linux
    в 99% случае было бы целесообразнй поработаь с кодом самого сайта это факт, улучшить систему кеширования переделать самые тяжелые запросы как правило при разрастание проекта такое не редко, и тут добиться производительности можно куда быстрей чем через костыли.
    так же не забывайте что если часть сайта не хотите кешировать то сделайте отдельный локейшен под эхто мероприятие.
    Так же есть особые рекомендации в индивидуальном порядке каждому движку.
    Так же не забывайте что даже смена версии пхп может сильно улучшить ситуацию опять же нужно смотреть что у вас, если вы на 5.6 то точно 100% да
    и даже если на 7.0
    не забывайте что так же у вас должен быть подключен opcache и качественно отстроены конфиги apache nginx и mysql это вам тоже должно дтаь отличный буст.
    до 50К посетителей сайт должен справляться на одном сервере без костылей.
    так что больше вводных
    какие версии че за по сслку на сайт ( это не сеерет, вы еще и за директ платите чтоб я ее узнал)
    Ответ написан
    Комментировать
  • Как добавить слеш в конце url?

    shambler81
    @shambler81 Куратор тега htaccess
    Тупо добавлять слеш нельзя поскольку с семантической точки это неправильно
    это нужно добавить если это каталог, или виртуальный каталог, и наоборот убрать если это файл
    к примеру /index.html/ - это смотрится тупо и сематнически неверно.
    Так что нужно и добавлять и удалять.
    так же я подправил требования под гугл пейдж спид.
    вот держи
    RewriteEngine on 
    #  Директива включает редиректы.
    ErrorDocument 404 /404.html
    # 404 ведет на 404.html
    
    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
     # 1. Удалить www
    RewriteCond %{ENV:HTTPS} on
        #Если включен https
    RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTPS} off
       # Проверяем наличие https в URL.
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteCond %{QUERY_STRING} !http(s|)://
      # Убедимся что это не урл в  GET
    RewriteRule .* /$0 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    
    ############################################################################
    #### если это заглавные буквы от трех до девяти например ВАСЯ.html      ####
    ############################################################################
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
    # если это английские заглавные буквы от 3 до 9
    RewriteRule ^([^.]+)\.html$ https://auto-cartel.ru/$1 [R=301,L]
    # то  удалить html останется просто /ВАСЯ, на другие случаи не распространяется.
    
    ############################################################################
    #### ЧПУ ДВИЖКА стоит всегда в самом низу правил                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(\.[^./]+)$
    RewriteCond %{REQUEST_fileNAME} !-d
    RewriteCond %{REQUEST_fileNAME} !-f
    RewriteRule (.*) /$1.html
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      AddType image/svg+xml .svg
      AddOutputFilterByType DEFLATE image/svg+xml  
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE image/svg+xml
    </IfModule>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 1 year"
      ExpiresByType image/svg "access plus 1 year"
      ExpiresByType image/gif "access plus 1 year"
      ExpiresByType image/png "access plus 1 year"
      ExpiresByType text/javascript "access plus 1 year"
      ExpiresByType text/css "access plus 1 year"
      ExpiresByType application/javascript "access plus 1 year"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
      ExpiresByType application/x-font-ttf "access plus 1 year"
      ExpiresByType application/x-font-opentype "access plus 1 year"
      ExpiresByType application/x-font-woff "access plus 1 year"
      ExpiresByType image/svg+xml "access plus 1 year"
    </IfModule>
      <IfModule mod_headers.c>
      <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
        Header set Cache-Control "max-age=31536000, public"
      </filesmatch>
      <filesmatch "\.(html|htm)$">
        Header set Cache-Control "max-age=7200, private, must-revalidate"
      </filesmatch>
      <filesmatch "\.(pdf)$">
        Header set Cache-Control "max-age=86400, public"
      </filesmatch>
      <filesmatch "\.(js|otf|ttf|woff|woff2)$">
        Header set Cache-Control "max-age=31536000, private"
      </filesmatch>
      </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
  • Как исправить неправильный ответ сервера в параметре HTTP_HOST?

    это происходит из-за я так понимаю битрикс вм или nginx+apache конфигурации
    насколько я понимаю у вас на бэке стоит апачь на 9443
    и в nignx в location указан с портом
    и все работает нормальнона 80 порту
    В общем почему так происходит:
    То как должно быть
    http --> http
    https --> https
    то как настриивается во всех манах по nginx +apache
    http --> http
    https --> http и костыли по подмене протокола
    суть такого костыля остается на совести того кто его предложил но по факту появляются вот такие хосты, поскольку в переменную попадает и порт.
    ну и если у вас есть на сайте првоерки на каком протколе вы находитесь то подделав его на фронте бэк о этом точн не знает и множество еще мелких костылей такие как ошибки в htaccess поскольку тот с протоколами вообще замучивается ибо он видит и тот и тот сразу.
    исправьте ситуацию
    nginx https :443 --> apache :4443(например) и подставляем и туда и туда один и тот же сертификат.

    Вот так должно быть:
    location / {
                    index index.php index.html index.htm;
                    proxy_pass              https://127.0.0.1:4443;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header        HTTPS           YES;
                            }

    У вас же скорее всего
    proxy_pass              http://127.0.0.1:9443;
      proxy_set_header        Host            $host:9443;

    в общем ройте в эту сторону, подробней после реальных конфигов
    Ответ написан
    Комментировать
  • Как отследить появление http трафика на сервере?

    shambler81
    @shambler81 Куратор тега Linux
    Не нужно его сбрасывать, его нужно синхронизировать.
    Мемкеш он с легкостью балансируется, собственно вы балансируете весь сессии и кеш
    Конечно можно сделать что-то вроде
    cat /var/log/nginx/access.log | grep  "тут признак того что   хиты нужные тебе пошли на него" | grep " тут признак  по дате или через awk   там омжно диапазон дат указывать." && /usr/bin/php /home/www/xxxx/current/app/cli.php cache clear prod

    И все это в крон, но лучше синхронизировать сессии и кеш
    Ответ написан
    1 комментарий
  • Может ли быть приставка www у поддомена и как с неё делать редирект на без www?

    shambler81
    @shambler81 Куратор тега htaccess
    www.site.ru - это просто домен 3 уровня не болше не меньше, это вообще другой домен, правда выданый вашим доменом, он такой же как и
    ya.site.ru www в свое время было создано для того чтоб вы понимали что это ворлд вайд веб то етсь эта ссылка это открыть в браузере ( интернет знаете ли существовал до браузера)
    теперь это и так ясно, по этому ввв не нужно
    так тчо по факту вещь устаревшая как мамонт, но все-равно когда вы создаете домен
    как правило сразу создаете поддомен 3 уровня для сайта и редиректите его на основной сйт.
    Так вот если у вас не создан поддомен то редирект вам не поможет
    поскольку DNS_PROBE_FINISHED_NXDOMAIN

    В общем
    1. зайдите в редактор ДНС зоны
    2. создайте или делигируйте на нужный вам айпи его ( тот же что и у основного домена)
    3. Убедитесь что у в веб панели на хостинге добавлен алиас домену ввв.
    4. дождитесь когда домен откроется по айпи, и будет вам счастье
    не забывайте что это обычный домен и его можно делигировать куда угодно и как угодно, можно на нем разменстить отдельный сайт( но этого просто не делают)
    Ответ написан
    Комментировать
  • Как использовать переменные из server_name nginx?

    не выдумывайте велосипед
    1. у вас 3 сайта сделайте три конфига как и положено, не изобретайте велосипед тем более на пустом месте.
    2. У вас 300 сайтов, тут вам поможет шаблонизатор или веб морда, собственно всего этого тоже навалом. и бесплатно и хорошего качества, зачем крутить костыли опять же непонятно.
    3. У вас динамичекие имена доменов, но тут доложено управлять ядро проекта и тут строго индивидуально.
    Ответ написан
  • Как настроить редирект для страниц сортировок в каталоге?

    shambler81
    @shambler81 Куратор тега htaccess
    1. Гет не является частью урла по этому вывделяется по другому
    2. как это сделать https://donatstudios.com/RewriteRule_Generator
    3. ОБрати внимание он всегда генерит все урлы в конце со знаком ? - он удалит все гет параметры, в пративном случае они останутся.
    4. что касается любого места тут чтоб не запутаться, включая ? и & так что это не имеет значения.
    5. Если тебе нужно часть гет вставить в урл

    Теперь тебе нужно будет объеденить в группы то что в верху по этому ты вместо нужного тебе гет параметра пишешь что-то вроде (.+)
    и вставляешь ее где тебе нужно но уже не $1 а %1 поскольку они идут из реврайт конда.
    Да квантификатор ?:удаляет эту группу из выбора по этому у тебя будет первая
    Но это если тебе нужно будет взять часть гет параметра и вставить ее в урл
    Ответ написан
  • Как создать регулярку поиска файлов, в названии которых от 3 до 5 символов?

    shambler81
    @shambler81 Куратор тега Linux
    Вот так
    find . -type f  -regextype posix-egrep -regex ".*/(.{3,5})\.([^\.]+)$"

    Собственно оно же но уже через греп, тут с подсветочкой но уже без возможности -exec но можно и пережить
    В примере учтена и возможность встречи точки в имени файла и пробелы
    find . -type f | grep -P "/(.{3,5})\.([^\.]+)$"

    5fbce0da70e1a137878967.png
    Спасибо кэп, отмечу решенным.
    Ответ написан
    Комментировать
  • Как получить в access.log все данные, включая действия с ftp, ssh и т.д.?

    Все совершенно логично, не вижу что тут не так
    У вас есть демон nginx у него есть access.log
    и у вас есть демон vsftpd у него свой лог, по какой причине они должны быть вместе?
    Тем более как правило за это отвечает /var/log/syslog ( имеется в виду помойка всех логов)
    По какой причине они бы отображались в обычном аксесс логе?
    у них вообщеразные функции
    Ответ написан
  • Как забрать логи с сервера за определенное время?

    shambler81
    @shambler81 Куратор тега Linux
    находится в 1 клике поиска
    https://stackoverflow.com/questions/17238908/how-t...
    И так логика простая вы делаете
    cat  you.log | grep "условие по дате" | grep "ваше условие че вы там ищете" | grep " тут еще условие" > 111.txt

    если последнее не делать то просто принтанет.
    Каждое предидущее условие будет передаваться на новый ввод вот этим символом |
    то есть результат прошлой команды подастся на ввод следующей эквивалент "И"
    Но в реальной работе куда лучше использовать
    tail -f | grep поскольку вы в отличие от открывания лога тут смотрите в режиме риалтамйм, очень удобно для работы.

    Если у тебя диапазон даты то лучше подойдет
    awk
    https://coderoad.ru/30352664/Grep-%D0%BC%D0%B5%D0%...
    Ответ написан
    Комментировать
  • Как изменить права для папки (диска) в Linux?

    shambler81
    @shambler81 Куратор тега Linux
    изменить права на файлы

    find /tmp/you_papka -type d -exec chmod 755 {} ;\ - выставить права на все каталоги
    find /tmp/you_papka -type f -exec chmod 644 {} ;\ - выставить права на все файлы в этой папке и ниже

    chmod -R root:root /tmp/you_papka- владелец root группа root на все что в этой папке (опасная команда вводить только с полным путем иначе есть вариант снести права всей системы ооочень быстро работает.
    но это ответ на ваш вопрос, однако не совсем понятно что вы хотите сделать.
    ОПишите реальную задачу сдается вы делаете что-то не то
    Ответ написан
    Комментировать
  • Как настроить редирект .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Вот та часть которая из вашего тз понятна
    RewriteCond %{QUERY_STRING} (?:^|&)id\=(.+)(?:$|&)
    RewriteRule ^cat/название/dir/1\.php$ /cat/название? [L,R=301]

    Теперь по передаче GET распшиите что вы имели в виду, как по вашему можно передать GET но не GET ?
    за вот такие художества должен отвечать ваш движок а не новый редирект.
    Какая у вас CMS
    покажите весь htaccess
    и более детально распишите тз
    Ответ написан
    Комментировать
  • Как сделать изменение урл с подкатегории на категорию?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^category/category/(.*)/$ /category/$1/? [L,R=301]

    давайте весь htaccess и что конкретно не работает
    Ответ написан
  • Nginx. Как при отсутствии файла перенаправлять запрос на php?

    через error_page
    error_page 401 403 404 405 500 502 503 = @fallback;
            location @fallback {
                    proxy_pass              http://127.0.0.1:82;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    
                    }

    try_files соответственно можно убрать
    конфиг приведен для nginx+apache
    Ответ написан
  • Как найти параметр в логах и вывести в файл?

    shambler81
    @shambler81 Куратор тега Linux
    правильно ли я понимаю вашу логику, вам нужно не просто grep по шаблонам но и условие которое позволит в строке оставлять одно из значений ?
    если нет то дайте реальный пример было стало. а так же важен формат вывода в строку не в строку два аргумента 1 и тд какие вармианты урлов бывают
    Ответ написан
    6 комментариев
  • Как настроить свой сервера DNS для сайтов?

    у вас в офисе винда так что смысл что то крутить когда
    а. В виндовс сервер он собственно уже есть че вам нужно ?
    б. яндес коннект - бесплатный днс сервер.
    в. Клауд флеер бесплатный днс сервер
    г. bind9 поставить и управлять на изи, есть и веб морды ( для линукс)
    Ответ написан
    Комментировать
  • Где и как определяется, что файл должен быть запущен или редактирован только от имени root?

    shambler81
    @shambler81 Куратор тега Linux
    Вот как выставляются права
    група и владелец отвечают за то куда попадет твой юзер, если он не попал ни в то ни в то то это все остальные значит 3 групапа ( 4цифра на рисунке)
    если толкьо в группу то 2 (3 цифра на рисунке)
    если это тот же юзер то первая. ( 2 цифра на рисунке)
    Добавляя владельца файла и группу ты перемещаешь его по rwx -> rwx -> r-x, которая состоит из 3 одинаковых параметров

    zj7pZlH.png

    Вот что они означают
    sec-sys2.png

    однако это стандартные права а есть еще и расширенные
    такие как SUID / SGID

    А так же есть еще и надстройки позволяющие к примеру только дописывать файл, не разрешать сохранять именно файл в этой директории и тд, но это уже эксклюзив и к вопросу не относится.
    Ответ написан
    Комментировать
  • Что может давать 301 редирект c https на http в Wordpress?

    Вариантов достаточно много вам нужно для начала понять что именно циклится.
    Вам для этого поможет https://bertal.ru/index.php?a566
    Он определит не только последний код но и всю цепочку
    как минимум будет видно какой ховтст в цикле.
    Скрин сюда если не будет понятно где ковырять.
    Домен не является скрытной информацией, в в директ платите для того чтоб я о нем узнал.
    Ответ написан
  • Как сделать массовое переименование файлов в директории?

    shambler81
    @shambler81 Куратор тега Linux
    find /var/www/ -type f -exec mv {} {}_renamed \;

    find-рекурсивный поиск от заданного каталога и ниже
    /var/www- где искать, если в текущем каталоге то можно заменить на .
    -type f - только файлы
    -exec выполнить с найденным
    mv переместить
    {} то что найдено в данном случае имя файла
    \; - просто закончит команду.
    Проверить можно так, вместо переименовывания вы получите просто принт самих команд.

    find /var/www/ -type f -exec echo {} {}_renamed \;

    5fb18a8d63453365594996.png
    Отметить решенным, спасибо кэп.
    Ответ написан
    Комментировать
  • Как задать значения в .htaccess для конкретных страниц?

    shambler81
    @shambler81 Куратор тега htaccess
    а зачем вам выворачивать логику кверху мехом?
    вообще то все должно быть с точностью до наоборот
    Ответ написан