Архив метки: Software

Полезные шаблоны конфигов и сниппеты для Nginx

Готовые варианты конфигурации для NGINX, а также полезные сниппеты для настройки необходимых условий.




Команды Nginx




Основные команды для выполнения базовый операций во время работы NGINX.




  • nginx -V — проверить версию NGINX, его скомпилированные параметры конфигурации и установленные модули.
  • nginx -t — протестировать конфигурационный файл и проверить его расположение.
  • nginx -s reload — перезапустить конфигурационный файл без перезагрузки NGINX.




Location блок на PHP




Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт.




location ~ .php$ {
  try_files $uri =404;
  client_max_body_size 64m;
  client_body_buffer_size 128k;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_pass unix:/path/to/php.sock;
}




Rewrite и Redirection




Force www




Корректный способ определить удаленный сервер по домену без www и перенаправить его c www:




server {
  listen 80;
  server_name example.org;
  return 301 $scheme://www.example.org$request_uri;
}
 
server {
  listen 80;
  server_name www.example.org;
  ...
}




Также работает для HTTPS




Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт.




location ~ .php$ {
  try_files $uri =404;
  client_max_body_size 64m;
  client_body_buffer_size 128k;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_pass unix:/path/to/php.sock;
}




Rewrite и Redirection




Force www




Корректный способ определить удаленный сервер по домену без www и перенаправить его c www:




server {
  listen 80;
  server_name example.org;
  return 301 $scheme://www.example.org$request_uri;
}
 
server {
  listen 80;
  server_name www.example.org;
  ...
}




Также работает для HTTPS




Force no-www




Корректный способ определить удаленный сервер по домену c www и перенаправить его без www:




server {
  listen 80;
  server_name example.org;
}
 
server {
  listen 80;
  server_name www.example.org;
  return 301 $scheme://example.org$request_uri;
}




Force HTTPS




Способ для переадресации с HTTP на HTTPS:




server {
  listen 80;
  return 301 https://$host$request_uri;
}
 
server {
  listen 443 ssl;
 
  # let the browsers know that we only accept HTTPS
  add_header Strict-Transport-Security max-age=2592000;
 
  ...
}




Force Trailing Slash




Данная строка добавляет слэш / в конце каждого URL только в том случае, если в URL нет точки или параметров. То есть после example.com/index.php или example.com/do?some=123 слэш не поставится.




rewrite ^([^.?]*[^/])$ $1/ permanent;




Удаление закрывающего слеша ко всем ссылкам на сайте:?




rewrite ^/(.*)/$ /$1 permanent;




Немного усложним пример и добавим исключение, тк есть, например, технические страницы:?




rewrite ^/((?!install|admin|administrator).*)/$ /$1 permanent;




Через «|» перечисленны исключения, для которых данное правило работать не должно.




Редирект на страницу




server {
  location = /oldpage.html {
    return 301 http://example.org/newpage.html;
  }
}




Редирект на сайт




server {
  server_name old-site.com
  return 301 $scheme://new-site.com$request_uri;
}




Редирект на определенный путь в URI




location /old-site {
  rewrite ^/old-site/(.*) http://example.org/new-site/$1 permanent;
}




Производительность




Кэширование




Навсегда разрешить браузерам кэшировать статические содержимое. NGINX установит оба заголовка: Expires и Cache-Control.




location /static {
  root /data;
  expires max;
}




Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом:




location = /empty.gif {
  empty_gif;
  expires -1;
}




Gzip сжатие




gzip  on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
  text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
  text/javascript application/javascript application/x-javascript
  text/x-json application/json application/x-web-app-manifest+json
  text/css text/plain text/x-component
  font/opentype application/x-font-ttf application/vnd.ms-fontobject
  image/x-icon;
gzip_disable "msie6";




Кэш файлов




Если у вас кешируется большое количество статических файлов через NGINX, то кэширование метаданных этих файлов позволит сэкономить время задержки.




open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;




SSL кэш




Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу.




ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;




Поддержка Upstream




Активация кеширования c использованием Upstream подключений:




upstream backend {
  server 127.0.0.1:8080;
  keepalive 32;
}
 
server {
  ...
  location /api/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
  }
}




Мониторинг




По умолчанию Stub Status модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью:




location /status {
  stub_status on;
  access_log off;
}




Данная настройка позволит вам получать статус в обычном текстовом формате по общему количеству запросов и клиентским подключениям (принятым, обработанным, активным).




Более информативный статус от NGINX можно получить с помощью Luameter, который несколько сложнее в установке и требует наличия NGINX Lua модуля. Это предоставит следующие метрики по различным конфигурационным группам в формате JSON:




  • Общее количество запросов/ответов.
  • Общее количество ответов сгруппирированных по статус кодам: 1xx, 2xx, 3xx, 4xx, 5xx.
  • Общее количество байт принятых/отправленных клиенту.
  • Промежуточные отрезки времени для оценки минимума, максимума, медианы, задержек и тд.
  • Среднестатистическое количество запросов для простоты мониторинга и составления прогнозов по нагрузке.
  • И прочее…




Демо от Luameter.




Также для сбора статистики отлично подходит ngxtop.




Безопасность




Активация базовой аунтификации




Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле:




имя:пароль




Затем установить настройки для server/location блока, который необходимо защитить:




auth_basic "This is Protected";
auth_basic_user_file /path/to/password-file;




Открыть только локальный доступ




location /local {
  allow 127.0.0.1;
  deny all;
  ...
}




Защита SSL настроек




  • Отключить SSLv3, если он включен по умолчанию. Это предотвратит POODLE SSL Attack.
  • Шифры, которые наилучшим образом обеспечат защиту. Mozilla Server Side TLS and Nginx.




don’t use SSLv3 ref: POODLE CVE-2014-356 — http://nginx.com/blog/nginx-poodle-ssl/




ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;




Ciphers set to best allow protection from Beast, while providing forwarding secrecy, as defined by Mozilla (Intermediate Set) — https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx




ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers  on;




Прочее




Подзапросы после завершения




Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд в дополнении или после его обработки. Первый случай — отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. post_action** , который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса — является лучшим решением для обоих вариантов.




location = /empty.gif {
  empty_gif;
  expires -1;
  post_action @track;
}
 
location @track {
  internal;
  proxy_pass http://tracking-backend;
}




Распределение ресурсов между источниками




Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер:




location ~* .(eot|ttf|woff) {
  add_header Access-Control-Allow-Origin *;
}




Коллекция готовых конфигурационных шаблонов для популярных CMS и фреймворков.







Источники






2022-04-14T17:17:36
Software

KeePassXC 2.7.1 выходит с некоторыми изменениями и исправлениями ошибок

Недавно анонсирован выход новой версии KeePassXC 2.7.1, версия, в которую были внесены некоторые изменения, включая поддержку пакетов flatpak, некоторые улучшения дизайна и, прежде всего, исправления ошибок.

Для тех, кто не знает КиПассХС, они должны знать, что это это бесплатный менеджер паролей и с открытым исходным кодом под лицензией GNU Public License. Это приложение начался как форк сообщества KeePassX (сам является портом KeePass) из-за очень медленной разработки KeePassX и отсутствия ответа от сопровождающего.



Читать

Links 2.26 поставляется с поддержкой DoH, веб-изображений и т. д.

Несколько дней назад анонсирован выпуск новой версии из веб-браузера «Ссылки 2.26» который поставляется с некоторыми новыми изменениями и исправлениями ошибок.

Для тех, кто не знает о ссылках, они должны знать, что это минималистичный веб-браузер, поддерживающий графический и консольный режимы. При работе в консольном режиме можно отображать цвета и управлять мышью, если это поддерживается используемым терминалом (например, xterm).

 

Читать

Кантата 2.5 уже вышла и это ее новости

После двух лет выпуска последней версии 2.4 разработчики Cantata сделал известным выпуск версии 2.5 вашего приложения, с помощью которых они добавляют новые функции, исправления ошибок и некоторые изменения.

Тем, кто не знаком с кантатой, следует знать, что — это консольный клиент MPD для музыкального плеера, написанный на Qt. Обладает хорошими характеристиками, хорошим интерфейсом, простотой в эксплуатации, интегрирован с окружением рабочего стола. Заказчик pВы можете воспроизводить музыку локально, но вы также можете транслировать ее в сеть.



Читать

Simutrans: бесплатная игра-симулятор транспорта с открытым исходным кодом

Simutrans: бесплатная игра-симулятор транспорта с открытым исходным кодом

Simutrans: бесплатная игра-симулятор транспорта с открытым исходным кодом

Вроде последнее обновление FlightGear, un
игра-симулятор полета с открытым исходным кодом, который почти прошел мимо нас, и о котором мы говорили недавно. Сегодня мы продолжим с новым доступным обновлением еще одного интересного игра-симулятор транспорта с открытым исходным кодом, Названная «Симутранс». Которые мы объявим сегодня, чтобы они не остались незамеченными.

Стоит отметить, что эта игра была рассмотрена в первый и единственный раз назад. 10 в течение многих лет, когда я едва был в Версия 102.2.2. Итак, сегодня мы сосредоточимся на ваших новых и текущих Версия 123.0.1, выпущен на Январь 29 2022, чтобы показать свой Загрузить и установить.



Читать

FlightGear 2020.3.12: Выпущена новая версия авиасимулятора

FlightGear 2020.3.12: Выпущена новая версия авиасимулятора

FlightGear 2020.3.12: Выпущена новая версия авиасимулятора

Чуть больше месяца назад стало известно, что переделывать крутая конюшня игра-симулятор полета с открытым исходным кодом известный как FlightGear был освобожден. Эта новая версия под номером «Летное снаряжение 2020.3.12» Включаю интересные и полезные новости. Которые мы объявим сегодня, чтобы они не остались незамеченными.

Стоит отметить, что чуть больше года назад, мы впервые подробно подходим к этой сказочной игре в ее предыдущей стабильной версии, то есть Версия 2020.3.11. Поэтому сегодня мы сосредоточимся только на их текущие новости.



Читать