Ответы пользователя по тегу Nginx
  • Все файлы формата кроме конкретного?

    PageAuditRU
    @PageAuditRU
    Senior SEO Анализатор
    Приоритеты location, но лучше в оригинальной доке почитать.
    location = my.jpg {
      ...
    }
    
    location ~* ^.+\.(...|ico|jpeg|jpg|...)$ {
      ...
    }


    или вот так

    location ~ ^my\.jpg$ {
      ...
    }
    
    location ~* ^.+\.(...|ico|jpeg|jpg|...)$ {
      ...
    }
    Ответ написан
  • Как настроить автообновление Let's Encrypt?

    PageAuditRU
    @PageAuditRU
    Senior SEO Анализатор
    1. При получении/обновлении сертификата движок Апача можно вообще не задействовать.
    2. Создайте каталог /var/www/letsencrypt
    3. Создайте файл /etc/nginx/letsencrypt.inc с содержимым
    location /.well-known {
    
            allow           all;
            root            /var/www/letsencrypt;
            error_log       /var/log/nginx/!letsencrypt.error.log;
            access_log      /var/log/nginx/!letsencrypt.access.log;
    
        }

    4. В секции server подключите файл letsencrypt.inc
    include letsencrypt.inc
    5. В каталоге /etc/letsencrypt найдите файл cli.ini, в нём должны быть строки
    webroot-path = /var/www/letsencrypt
    authenticator = webroot
    installer = None

    6. Запустите команду certbot renew
    7. В файле crontab создать строки
    # Certbot renew
    0 0     15 * *  root    certbot renew --renew-hook "service apache reload; service nginx reload"


    PS: Если обновление таким способом не пройдёт, то забейте на текущий сертификат, получите новый безо всяких оболочек, а сразу через консольные программы согласно инструкции к certbot для Nginx. В общем, никаких особых сложностей быть не должно, тут только вопрос чётко прописать откуда брать и куда класть.
    Ответ написан
  • Как преодолеть 504 Gateway Time-out при выполнении долгого запроса на Open Server?

    PageAuditRU
    @PageAuditRU
    Senior SEO Анализатор
    В конфигурации NGINX необходимо прописать строку
    fastcgi_read_timeout 9999;
    или
    proxy_read_timeout 9999;
    в зависимости от конфигурации.
    Писал на память, но гуглите в этом направлении.
    Ответ написан
  • Как работате кеширование сервера?

    PageAuditRU
    @PageAuditRU
    Senior SEO Анализатор
    На сервере кэш сбросится. В браузере - будет зависеть от политики кэширования страницы.
    Политика кэширования сервера никак не отражается на кэшировании в браузере. Это два разных кэша. Поэтому браузер ничего не знает о принципах кэширования, принятых на сервере. Браузеру всё равно, как веб-сервер у себя хранит данные и откуда их достаёт. Поэтому пользователь, зашедший на ваш сайт через час, получит версию файла, которая была закэширована веб-сервером не ранее, чем за 10 минут до запроса этого файла браузером.
    Короче, пользователь, зайдя в 12:00 на ваш сайт, получит файл, который новее, чем созданный ранее 11:50-ти этого же дня при условии, что браузер не кэширует страницу.
    Перечитываю, и сам втупляю. Веб-сервер-то настроен правильно отдавать браузеру заголовки кэширования?
    Ответ написан
  • Как настроить phpmyadmin + nginx?

    PageAuditRU
    @PageAuditRU
    Senior SEO Анализатор
    У меня вот так сто лет назад настроено, работает.

    server {
      listen 8379;
      server_name _;
      root /usr/share/phpMyAdmin-4.9.4;
      index index.php;
    
      access_log off;
      error_log /var/log/nginx/phpmyadmin.error.log;
    
      location ~ ^/(.+\.php)$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }
    
    }

    Открывается через свой порт mysite.com:8379

    В Вашем варианте не указан каталог, где лежит скрипт PHPMyadmin и не указано, кто его должен исполнять.
    Ответ написан
  • Как заблокировать определенные боты в Nginx?

    PageAuditRU
    @PageAuditRU
    Senior SEO Анализатор
    map $http_user_agent $limit_bots {
         default 0;
         ~*(AltaVista|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
         ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
         ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
         ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
         ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
         ~*(Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
     } 
    
    location / {
      if ($limit_bots = 1) {
        return 403;
      }
    }

    Прямо сейчас занимаюсь аналогичной проблемой.
    Вот такой вариант грубо отсечёт много (но не всех) ботов.
    Если бот не сообщит в User-Agent своё имя, а прикинется обычным пользователем, то эта схема его не остановит. Нужно будет анализировать его поведенческие факторы, но это уже не сделать на уровне NGINX.
    Ответ написан