Ответы пользователя по тегу Nginx
  • Как правильно настроить логи php-fpm?

    copist
    @copist
    Empower people to give
    Оставь пользователя www-data и не меняй его

    либо поставь пользователю usersite группу www-data, файлам выдай права 775 (читать писать владельцу и группе)
    либо когда надо поработать с файлами, сделай sudo su www-data и ковыряйся с файлами

    2) Логи ротируются другим сервисом, у которого рутовые права, он сможет.
    3) Файлы сессий никогда сами не удаляются. Удаляй по крону. Крон от пользователя www-data или root
    4) Nginx ещё пользуется кэшированием при проксировании. Есть папки /var/lib/nginx/*** (путь зависит от версии ОС) - обычно nginx может туда писать, но если ты ему пользователя поменяешь, то и на эти папки права надо поменять
    Ответ написан
  • Как сделать скрытую авторизацию?

    copist
    @copist
    Empower people to give
    Используй HTTP MiddleWare

    Вот решение по ограничению доступа к некоторым URL с проверкой прав доступа авторизованного пользователя
    laravel.io/forum/02-17-2015-laravel-5-routes-restr...

    Но у них при отсутствии некоторой роли идёт редирект на /home , а тебе надо (я так понимаю) вернуть 404 Page Not Found

    public function handle($request, Closure $next)
    {
        if ($request->user()->type != 'A')
        {
            abort(404,'Page not found');
        }
    
         return $next($request);
    }
    Ответ написан
    4 комментария
  • Все заголовки прописаны, но почему No 'Access-Control-Allow-Origin'?

    copist
    @copist
    Empower people to give
    7838d6ffbf39455099b6c005805e8e9a.png

    Посмотри реальные ответы сервера в Chrome Developer Tools в панели Network при отключенной опции "Disable Caching"

    Там может не быть CORS заголовков, или они могут быть не с тем access-control-allow-origin, если ты уже открывал тот же URL через прямой запрос из строки браузера или запрашивал тот же URL в том же браузере с другого домена.

    Дело в том, что браузер кэширует ответы включая заголовки. Ключом в кэше является URL запроса, а все заголовки (куки, origin, referrer) не участвуют. Поэтому у тебя в кэше может быть сохранённый ответ с заголовками ранее сделанного запроса.

    Решение, которое гарантирует, что ответ сервера не будет кэшироваться:
    1. в ответе сервера указывать заголовки, подавляющие кэширование
    2. делать запросы методом POST, который не кэшируется
    3. добавлять к URL "хвостик" из псевдослучайных символов, например ревизию кода, версию API, наименования вызывающего приложения или даже метку времени

    На практике мы пытались 1, 2 и в итоге пришли к 3 если гарантированно нужен незакешированный ответ сервера. Например, количество непрочитанных сообщений пользователя.
    Ответ написан
    Комментировать
  • Редирект без передачи REFERER?

    copist
    @copist
    Empower people to give
    1. проксирование с помощью proxy_pass в nginx с подавлением заголовка HTTP_REFERRER
    2. запрос целевой страницы через с помощью curl/file_get_contents в PHP без указания HTTP_REFERRER
    Ответ написан
    Комментировать
  • Почему не прогружается полностью страница nginx+php-fpm?

    copist
    @copist
    Empower people to give
    nginx работает под одним пользователем, а php-fpm под другим.
    Настройте так, чтобы они работали из-под одинакового пользователя, либо включите одного из них в группу другого.

    Проверьте права на папки кэша и прокси данных
    ls -la /var/lib/nginx/cache /var/lib/nginx/proxy
    Дайте права на чтение/запись в эти папки для php-fpm и nginx
    Ответ написан
    Комментировать
  • Как изменить uri на новый (для обработки другим локейшном) без редиректа?

    copist
    @copist
    Empower people to give
    Посмотри документацию на nginx/rewrite
    Если правило "куда" не включает схему (http:// или https://), то можно сделать внутренний редирект.

    Файлы
    /old/path/index.html с текстом "Old";
    /new/path/index.html с текстом "New";
    download?id=AmPy05G2J5pmqNOR6UxhRP56pXVj

    Попробуй такое правило
    location ~ /old/path {
        rewrite /old/path(.*) /new/path$1 break;
    }

    У меня браузер остался с прежним URL, но показал файл по новому пути
    download?id=jNnoITrzRcwF9wcxezeF8AzSoWp6
    Ответ написан
    Комментировать