Как стать автором
Обновить
7.64

Nginx *

Веб-сервер и почтовый прокси-сервер

Сначала показывать
Порог рейтинга
Уровень сложности

Отправка почты из Docker-контейнера (докеризация postfix и sasl)

Время на прочтение6 мин
Количество просмотров28K
Когда я расположил приложение в Docker-контейнере и попробовал отправить email на почтовый сервер в другом Docker-контейнере, столкнулся с непредвиденной проблемой. Почтовый сервер postfix по умолчанию отправляет почту на произвольный домен получателя только от локального клиента. Все остальные домены нужно прописывать в параметре relay_domains, и если параметр mynetwors настроен правильно, то почта будет отправляться на перечисленные в параметре relay_domains домены с клиента из mynetwors.

В принципе, мне этого было достаточно, т.к. приложение теоретически должно было отправлять почту на ровно один корпоративный почтовый сервер. Но такое решение меня не очень устраивало, потому что задача может поменяться в любой момент. Поэтому, я попытался настроить sasl-авторизацию, которая позволяет отправлять почту авторизованным пользователям на произвольный домен.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии15

Централизованное обновление сертификатов Let's Encrypt

Время на прочтение3 мин
Количество просмотров17K

letsencrupt server


Всем привет!


В этой статье я опишу как мы решали проблему централизованного обновления сертификатов Let's Encrypt и управления инфраструктурой с помощью ansible.


В нашем решении мы будем использовать:


  • ansible
  • rsync, rsyncd
  • inotify, incron
  • certbot
  • nginx
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии16

Вечный фотоархив для дома

Время на прочтение6 мин
Количество просмотров44K

Не понимаю желания ностальгировать на старые фотографии. Но девчонок не переделаешь, поэтому пришлось подумать про хранилище для всех, чтобы больше не приставали показать с компа карапузов и котиков. В публичное облако выкладывать все фотки подряд не хочется.


image


Теория


Ресурс работы SSD накопителя теоретически не ограничен, если не превышать количество циклов перезаписи в ячейку.


Задача


Сделать систему хранения и просмотра домашнего фотоархива с любого устройства в доме,
и убрать подальше на ближайшие 10 или 20 лет. При этом иметь возможность залить и посмотреть фотки с любого устройства подключенного к internet не использую публичные сервисы хранения и не устанавливая дополнительного клиентского ПО.


Выбор железок дело субъективное, но для себя сформулировал требование к малому формфактору. Кроме того все что скрыто от глаз в квартире, как правило лежит в пожароопасном месте, по этому хотелось питание в по USB, и минимум проводов.

Читать дальше →
Всего голосов 39: ↑24 и ↓15+9
Комментарии95

NGINX и gRPC теперь настоящие друзья

Время на прочтение4 мин
Количество просмотров25K
Несколько дней назад зарелизилась новая версия Nginx — 1.13.10. Главная фича данного релиза — это нативная поддержка проксирования HTTP/2, и, как следствие, gRPC.
Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии2

Истории

Простая аутентификация на NGINX с помощью LUA

Время на прочтение7 мин
Количество просмотров22K
image
Доброго времени суток. В данной заметке хочу рассказать о простой аутентификации с помощь nginx и lua-скриптов.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии12

Установка сервера Linux + (Nginx + Apache) + PostgreSQL + PHP на VirtualBox (Ubuntu Server 16.04.3 LTS)

Время на прочтение9 мин
Количество просмотров57K
На просторах интернета не нашел единого рецепта по установке и настройке такого, довольно нестандартного сервера. Решил написать свой рецепт.

Принцип работы следующий:


Статические данные (файлы) отдает Nginx, а динамикой занимается Apache.
Читать дальше →
Всего голосов 52: ↑12 и ↓40-28
Комментарии33

Авторизация с помощью сертификата ssl на nginx + Let's Encrypt

Время на прочтение4 мин
Количество просмотров33K
Добрый день, вечер или ночь, все зависит от времени суток в который вам довелось прочитать мою статью.

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


Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии17

Как поднять проект на PHP в Docker под Windows

Время на прочтение6 мин
Количество просмотров18K

Чем является статья


Статья является набором простых, понятных инструкций и советов для пользователей Docker под Windows. Статья поможет разработчикам на PHP быстро поднять проект. Описываются проблемы и их решения. Статья полезна тем, кто не обладает бесконечным ресурсом времени, чтобы глубоко копаться в проблемах докера под Windows. Автор был бы бесконечно признателен, если бы ему ранее встретилась подобная статья и автор бы съэкономил бы много сил и времени. Текст может содержать ошибки и неточности.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии16

Алгоритм выбора location в Nginx

Время на прочтение3 мин
Количество просмотров73K
image

Алгоритм выбора location обязателен к знанию при настройке nginx. Тем не менее, на официальном сайте nginx (на 2018 год) не сказано ни слова про алгоритм выбора в случаях, когда какие-то location'ы вложены друг в друга, а в статьях в интернете приводятся в корне неверные алгоритмы. В статье также будет дан пример уязвимого конфига.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии21

Докеризация nginx и php на сокетах с ротацией логов

Время на прочтение5 мин
Количество просмотров23K
В статье на Хабре обсуждался «docker way»(TM), который гласит: один контейнер — один процесс.
one process per container
Each container should have only one concern

Decoupling applications into multiple containers makes it much easier to scale horizontally and reuse containers. For instance, a web application stack might consist of three separate containers, each with its own unique image, to manage the web application, database, and an in-memory cache in a decoupled manner.

You may have heard that there should be “one process per container”. While this mantra has good intentions, it is not necessarily true that there should be only one operating system process per container. In addition to the fact that containers can now be spawned with an init process, some programs might spawn additional processes of their own accord. For instance, Celery can spawn multiple worker processes, or Apache might create a process per request. While “one process per container” is frequently a good rule of thumb, it is not a hard and fast rule. Use your best judgment to keep containers as clean and modular as possible.

If containers depend on each other, you can use Docker container networks to ensure that these containers can communicate.
Следование этому принципу при докеризации nginx чревато двумя последствиями. Настроить взаимодействие nginx и php-fpm в разных процессах через unix сокет немного сложнее, чем может показаться. И ротация логов, которая при обычной установке идет «из коробки», не может осуществляться в принципе, т.к. требует отправки сигнала USR1 nginx, для чего нужен ещё один процесс.
Читать дальше →
Всего голосов 17: ↑11 и ↓6+5
Комментарии25

АТС в контейнере. Asterisk 14 + Nginx + Freepbx 14 + srtp на Centos 7 в lxc-контейнере Proxmox VE 4

Время на прочтение7 мин
Количество просмотров23K
В контейнеры, в наше время, можно установить множество интересных систем
но под катом вы сможете найти лишь относительно стандартную инструкцию по установке asterisk+freepbx. Скуку слегка развеет то, что версии всего ПО «последние стабильные», есть шифрование, вместо apache — nginx, а вся установка под недавно «повзрослевший» lxc. На выходе получится достаточно мобильная, компактная и современная IP-АТС, потребляющая в покое 200-300 Мб ОЗУ
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии7

Защита от DDoS на уровне веб-сервера

Время на прочтение5 мин
Количество просмотров46K
Статистика DDoS-атак показывает неизменный рост и смещение вектора с сетевого уровня на уровень приложений.

image

Если у Вас есть небольшой сайт на сервере с минимальными характеристиками, то положить его можно любым вполне легальным средством стресс-тестирования. (Не рекомендую этого никому делать т.к. IP-адрес легко вычисляется и экспериментатор может влететь на возмещение ущерба.) Поэтому сайт без защиты от DDoS очень скоро будет выглядеть так же дико, как компьютер с Windows-98 без анивирусника.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии4

Создание главной страницы авторизации (landing page) BigBlueButton 2.0b

Время на прочтение7 мин
Количество просмотров9.8K
Здравствуйте, в этой статье я вкратце расскажу, как создать главную страницу с авторизацией для сервера видеоконференций BigBlueButton версии 2.0b.

Установка самого сервера не должна вызвать каких-либо серьезных проблем и осуществляется она по инструкции с официального сайта.

Обязательно установите набор демо-страничек – из них мы будем создавать главную страницу сайта.

После установки демо – они появятся на вашем сервере по пути /var/lib/tomcat7/webapps/demo
Среди них есть файл demo3.jsp – именно он подходит для изменения, так как в нем реализован функционал авторизации пользователя по паролю, при чем пароль присвоен не пользователю, а видеоконференции.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Ближайшие события

После прочтения сжечь. Делаем одноразовые ссылки на голом Nginx

Время на прочтение7 мин
Количество просмотров15K
Для начала нужно уточнить, что я настоятельно не рекомендую использовать это решение в боевых условиях. Лучше вовсе так не делать никогда. Всё, что вы делаете, вы делаете на свой страх и риск. Причины, которые заставляют дать такой совет, будут приведены в содержании статьи. Если это предупреждение вас не отпугнуло, то добро пожаловать под кат.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии18

Конструирование сайта, защищенного от блокировок

Время на прочтение4 мин
Количество просмотров21K

Привет всем! В связи с ростом блокировок, в том числе необоснованных, сайтов со стороны государства, вашему вниманию предлагается описание идеи, а также прототип настроек сайта, защищенного от блокировок по конкретному пути и доменному имени. Идеи по защите от блокировок:


  • со звездочкой
  • по адресу IP

будут изложены в других постах. Кому интересна тема, заходите под кат.

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии67

Раздача видео. Засада: nginx или php?

Время на прочтение3 мин
Количество просмотров14K
Хочу поделиться своим маленьким опытом в реализации раздачи видео-контента.

Итак


Есть сервис, раздает видео-контент для просмотра (т.е. именно скачивание не предусматривается).
Читать дальше →
Всего голосов 21: ↑14 и ↓7+7
Комментарии62

Как можно взломать свой же Web проект?

Время на прочтение4 мин
Количество просмотров28K


Недавно мне позвонили и попросили помочь разобраться с очень странными симптомами на сайте. А симптомы выглядели вот так. Cовершенно разные клиенты звонили и рассказывали, что они на сайте попадают в личные кабинеты других случайных клиентов. Логинятся под собой. Входят в свой аккаунт, а потом бац – и уже в аккаунте другого клиента. Правда они не догадывались, что кто-то другой так же мог оказаться в их личном кабинете.


Давайте я расскажу «историю неуспеха», чтобы другие на эти грабли не наступали.

Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии31

Инструкция как скомпилировать динамический модуль ngx_pagespeed для Nginx на Debian

Время на прочтение3 мин
Количество просмотров9K
Цель: Предоставить инструкцию по сборке динамического модуля, дать понимание принципа сборки динамического модуля для Nginx поставленного из репозитория Debian.

Целевая аудитория: Администраторы серверов, продвинутые администраторы сайтов, сео-оптимизаторы и просто те кто хочет добиться хорошей оценки от сервиса Google PageSpeed.

Статей на эту тему не мало в поиске светится, но на мой взгляд ни одна не раскрыта как надо. Да и нет толковых пояснений. Для не опытного юзера это может оказаться сложным, да и большая часть статей поясняет как собирать Nginx вместе с модулем, и только единицы показывают что можно собрать динамический.

План действий такой:

1. Арендуем vps на час.
2. Собираем на арендованной vps динамический модуль на той же самой версии Nginx что была использована на боевом (это ВАЖНО!!!. Поддержка динамических модулей у Nginx появилась с версии 1.9.11).
3. Перекидываем модуль на новый сервер.
4. Конфигурируем Nginx.
5. Применяем настройки.
6. Замораживаем версию Nginx (Если это не сделать, то при ближайшем обновлении Nginx, произойдёт падение сервера. Причина в том что скомпилированный модуль будет работать только с конкретной версией Nginx. Если захотите обновиться, скомпилируете модуль для новой версии и обновитесь).

Или следим за тем что обновляем и своевременно добавляем новый собранный модуль.

Преимущество в том что боевой сервер не подвергается изменению и если Вам к примеру не понравится ngx_pagespeed, то вы просто уберёте строчки конфигурирующие его и сам модуль. Ну и если Вы используете несколько серверов с Nginx Вы можете один раз скомпилировать модуль для них всех.
Читать дальше →
Всего голосов 19: ↑13 и ↓6+7
Комментарии29

Рецепт установки блога GHost в VMManager для Debian 9

Время на прочтение3 мин
Количество просмотров2.6K
Цель: Дать методику написания рецепта для VMManager, с самим рецептом в конце. В итоге упростить установку блога GHost для не подготовленных пользователей.

Целевая аудитория: Блогеры и те кто хотят ими стать, а так же хостеры желающие использовать подобный рецепт и просто администраторы.

Причина написания статьи кроется в том, что только за последний месяц ко мне уже второй раз обращаются за помощью в установке GHost, причём заваливаются на банальном. Поискал инструкции по установке и понял что рядовой пользователь, который не общается с консолью, вероятно не быстро их распробует.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии2

Ожидание длиной в 15 лет. Nginx Application Server

Время на прочтение5 мин
Количество просмотров58K
Начиная с момента появления Nginx в 2004 году, мы все задавались вопросом: когда же на nginx можно будет запускать приложения? Мы запускали PHP в php-fpm и на апаче, запускали Python через uWSGI, иногда жили с Apache, а если нам нужны были разные версии PHP — жили с зоопарком из FPM-ов.

image

Только что на конференции NginxConf в Портленде Nginx, Inc. объявил о запуске Nginx Application Platform. ITSumma тестировала один из его компонентов, собственно сам Application Server под названием Nginx Unit с закрытой версии. В этом посте мы расскажем о том, как выглядит Nginx Unit, и как на нем запускать приложения.
Читать дальше →
Всего голосов 131: ↑125 и ↓6+119
Комментарии119