Ответы пользователя по тегу Nginx
  • 404 ошибка nginx wordpress?

    gedev
    @gedev
    сисадмин-энтузиаст
    Поменяйте корневой локейшн, из-за него у вас не происходит роутинга запросов в CMS. Все запросы должны перенаправляться на index.php.
    location / {
        try_files $uri $uri/ =404 /index.php?$args;
    }
    Ответ написан
    Комментировать
  • Как исправить ошибку 404 при обновлении страницы?

    gedev
    @gedev
    сисадмин-энтузиаст
    Попробуйте так:
    location / {
        try_files $uri $uri/ /;
        index index.html;
    }

    Для роутинга в SPA надо чтобы запросы на несуществующие урлы переводились на index.html. Не знаю что у вас на 9900 слушает, в общем адаптируйте под свой конфиг.
    Ответ написан
    Комментировать
  • Оптимизация сайта под требования PageSpeed Insights. Как исправить долгий ответ сервера 650 ms?

    gedev
    @gedev
    сисадмин-энтузиаст
    Дежурное напоминание. См. пункт 5.12.

    По замерам TTFB и правда грустный. Что-то тормозит сайт ещё на этапе генерации страницы. По опыту узким местом чаще всего является БД.

    Для связки Nginx+PHP-FPM можно добавить кэш FastCGI.
    Также можно попробовать потюнить базу данных.

    Но сперва попробуйте запустить index.php через консоль и посмотрите что идёт не так. Насколько долго он думает (time). Можно прогнать через strace, чтобы посмотреть более детально (анализ strace требует подготовки).
    Ответ написан
  • Как обновить файлы в flask app nginx?

    gedev
    @gedev
    сисадмин-энтузиаст
    рестартаю сервак

    Это рестарт nginx, gunicorn или вы весь сервер перезапускаете?

    Если редактируете файлы .html которые обрабатывает Flask (темплейты) и при этом старый шаблон сохраняется (кэшируется), то перезапуска gunicorn будет достаточно. Чтобы быть уверенным, сначала прибейте все активные процессы gunicorn с помощью kill / htop, как удобнее, и запускайте снова.

    Если проблема при редактировании html файлов, которые отдаёт nginx напрямую (не проксируя запрос к файлу в ваше приложение), то смотрите настройки кэширования файлов в nginx, исключите кэш html.
    Ответ написан
  • Умеет ли nginx "запоминать" пользователя?

    gedev
    @gedev
    сисадмин-энтузиаст
    Тут вопрос касается не столько работы Nginx, сколько протокола HTTP. HTTP не "запоминает" клиента. Nginx лишь может записать реферера, отсюда у вас есть информация о том, откуда пришёл клиент. Дальше на сайте клиент делает новый запрос, который никак не связывается с предыдущим. Поэтому, как верно подсказывают, реализацию вашей задачи надо выполнять на уровне приложения.
    От себя добавлю, что перекладывать часть функционала приложения на веб-сервер это не очень хорошая идея.

    HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ».

    Тык, тык.
    Ответ написан
    Комментировать
  • Зачем создавать символьную ссылку на public_html?

    gedev
    @gedev
    сисадмин-энтузиаст
    Для корректной отдачи статического контента средствами Nginx необходимо создать символьную ссылку public, указывающую на public_html.

    Судя по всему вы используете shared хостинг и там жёстко прописан DocumentRoot в настройках веб-сервера.
    Тут симлинк имеет смысл чтобы заставить веб-сервер читать другую папку, а не publiс_html/.
    Удалите publiс_html/ и создайте симлинк:

    ln -s /path/to/public /path/to/public_html
    Ответ написан
  • Как устранить ошибка 404 после / в связке nginx-wsgi-flask?

    gedev
    @gedev
    сисадмин-энтузиаст
    Удалите эту строку из конфига Nginx:
    try_files $uri $uri/ =404;
    Тут дело в том, что Nginx должен передавать в бэкенд все запросы, на которые не может отдать ответ сам. Если папка hello действительно не лежит в root, то Nginx вернёт 404.

    SoreMix тоже прав. Во Flask слэш имеет значение. Вы можете отключить строгое соблюдение слэшей добавив в приложение код:

    app.url_map.strict_slashes = False
    Ответ написан
    Комментировать
  • Столкнулся с поддоменом, который отдает 403 forbidden но при этом открывается. Как такое реализовано?

    gedev
    @gedev
    сисадмин-энтузиаст
    Проиллюстрирую ответы выше примером на Python (запускать через CGI).

    Вот такой скрипт. Всё что находится до пустого print() это заголовки HTTP:

    #!/usr/bin/env python3
    
    print("Status: 403 Forbidden")
    print("Content-type: text/html")
    print()
    print("<h1>Hello world!</h1>")


    Если запросить страницу через curl, то мы получим тело ответа:

    $ curl http://example.ru/cgi-bin/scr.py
    <h1>Hello world!</h1>


    Если запросить заголовки, то 403, как и указано в скрипте:

    $ curl -I http://example.ru/cgi-bin/scr.py
    HTTP/1.1 403 Forbidden
    Server: nginx/1.16.1
    Date: Tue, 17 Nov 2020 12:01:18 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    Vary: Accept-Encoding
    Ответ написан
    Комментировать