Vykoristovuёmo nginx за vikonannya tsіkavih и нестандартни задачи. Nginx уеб сървър, преглед на функционалността Инсталиран и настроен PHP

NGINX може да се използва не само като уеб сървър, но и като http-прокси, но и за прокси чрез SMTP, IMAP, POP3 протоколи. Tse позволи nalashtuvati:

  • Единна входна точка за мащабирана пощенска система.
  • Балансиране на суетата между пощенските сървъри.

Тази статия е инсталирана на операционната система Linux. Като пощенска услуга, към която се изпращат заявки, можете да използвате postfix, exim, dovecot, exchange, iredmail и др.

Роботизиран принцип

NGINX приема и извлича удостоверяване от уеб сървъра. В зависимост от резултата от повторното потвърждаване на потребителското име и паролата, прокситото обърна обръщането на заглавките.

В моменти на успех:

По този начин сървърът и портът на пощенския сървър се определят въз основа на удостоверяването. Това дава много възможности за напреднали познания по програмирането на mov.

В моменти на неуспех:

В зависимост от резултата от удостоверяването и заглавката, клиентът се пренасочва към това, от което се нуждаем пощенски сървър.

Подготовка на сървъра

Нека направим някои промени в сигурността на сървъра.

SELinux

Включително SELinux, както и CentOS или като Victory qiu системасигурност в Ubuntu:

vi /etc/selinux/config

SELINUX=деактивирано

защитна стена

Как да използвате firewalld(за заключване от CentOS):

firewall-cmd --permanent --add-port=25/tcp --add-port=110/tcp --add-port=143/tcp

firewall-cmd --reload

Как да използвате iptables(за заключване в Ubuntu):

iptables -A INPUT -p tcp --dport 25-j ПРИЕМАНЕ

iptables -A INPUT -p tcp --dport 110 -j ПРИЕМАНЕ

iptables -A INPUT -p tcp --dport 143 -j ПРИЕМАНЕ

apt-get инсталирате iptables-persistent

iptables-save > /etc/iptables/rules.v4

* в това дупеРазрешихме SMTP (25), POP3 (110) и IMAP (143).

Инсталиране на NGINX

Попаднала в операционната система, инсталацията на NGINX е трайна.

или Linux centos:

yum инсталирайте nginx

или Linux ubuntu:

apt инсталира nginx

Разрешено е автоматично стартиране на услугата и стартиране на йога:

systemctl активира nginx

systemctl стартира nginx

Ако NGINX вече е инсталиран в системата, той може да се провери със следните модули:

Приемаме списък с опции, с които избор на уеб сървър - можем да избираме между тях --с поща. Тъй като няма задължителен модул, трябва да актуализирате nginx

Персонализиране на NGINX

Отворете конфигурационния файл на nginx и добавете опцията поща:

vi /etc/nginx/nginx.conf

поща (

auth_http localhost:80/auth.php;

Сървър(
слушай 25;
протокол smtp;
smtp_auth вход обикновен cram-md5;
}

Сървър(
слушай 110;
протокол pop3;

}

Сървър(
слушай 143;
протоколна карта;
}
}

*de:

  • Име на сървъра- Име на пощенския сървър, който трябва да бъде часът на SMTP приватизацията.
  • auth_http- уеб сървър и URL за заявка за удостоверяване.
  • proxy_pass_error_message- разрешаване или предотвратяване на нотификацията за известия за един час недалеч от удостоверяването.
  • слушам- пристанище, на което може да се чуе напитката.
  • протокол- протокола на програмата, за която се прослушва портът.
  • smtp_auth— Налични методи за удостоверяване за SMTP.
  • pop3_auth— Налични методи за POP3 удостоверяване.

Добавете следното към секцията http-сървър:

Сървър(
слушайте 80 default_server;
слушай [::]:80 сървър по подразбиране;
...

Местоположение ~ \.php$ (
задайте $root_path /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
включва fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
...

Рестартирайте nginx сървъра:

systemctl рестартирайте nginx

Инсталиране и персонализиране на PHP

За да постигнете удостоверяване за помощ за PHP, трябва да инсталирате следните пакети в системата.

Yakscho CentOS:

yum инсталирайте php php-fpm

Yakscho ubuntu:

apt-get инсталирайте php php-fpm

Стартирайте PHP-FPM:

systemctl активира php-fpm

systemctl стартира php-fpm

Удостоверяване

Повторната проверка на потребителското име и паролата се променя от скрипта, пътят към който е зададен от опцията auth_http. Нашето приложение има PHP скрипт.

Пример за официално празно място за скрипта за проверка на потребителското име и паролата:

vi /usr/share/nginx/html/auth.php

* този скрипт приема дали е вход и парола и пренасочва заявката към сървъра 192.168.1.22 і 192.168.1.33 . За да зададете алгоритъма за удостоверяване, редактирайте редове 61 - 64. За завъртане на сървъра, по маршрута за пренасочване, редове 73 - 77 - в това приложение влизането се основава на символа "a", "c", "f", "g",след това ще бъдете пренасочени към сървъра mailhost01, в противен случай, на mailhost02. Задаването на имена на сървъри с IP адреси може да се зададе на редове 31, 32, в противен случай ще отидете по име на домейн.

Настройка на пощенски сървър

Обменяйте данни между NGINX прокси сървъри и изпращайте сървър, за да отидете до отворения код. Необходимо е да се добави възможност за активиране на удостоверяване зад механизма PLAIN. Например, за закрепване на гълъбарник, robimo вземете:

vi /etc/dovecot/conf.d/10-auth.conf

Добавяме редове:

дистанционно 192.168.1.11 (
disable_plaintext_auth = не
}

* на кое приложение е било разрешено да изпълнява PLAIN заявки за удостоверяване от сървъра 192.168.1.11 .

Също така се потвърждава:

* якчо sslрано значение задължително, повторна проверка на нищо за почистване, oscillki weide, че от едната страна сървъра ви позволява да пиете на ясен изглед, но и ssl криптиране.

Рестартирайте услугата Dovecot:

systemctl рестартирайте dovecot

Персонализиране на клиента

Можете да отидете на повторна проверка на нашите прокси настройки. За кой в ​​настройките на клиента като IMAP / POP2 / SMTP посочете адреса или името на nginx сървъра, например:

* за това приложение пощенският клиент е настроен за връзка със сървъра 192.168.1.11 На към критични портове 143 (IMAP) и 25 (SMTP).

криптиране

Сега имаме SSL връзка. Nginx може да бъде поръчан с модула mail_ssl_module- Ревизирано от екипа:

За наличието на необходимия модул, nginx се сортира.

След това редактираме нашия конфигурационен файл:

vi /etc/nginx/nginx.conf

поща (
server_name mail.domain.local;
auth_http localhost/auth.php;

proxy_pass_error_message включен;

SSL включен;
ssl_certificate /etc/ssl/nginx/public.crt;
ssl_certificate_key /etc/ssl/nginx/private.key;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache споделен:SSL:10m;
ssl_session_timeout 10m;

Сървър(
слушай 110;
протокол pop3;
pop3_auth обикновен apop cram-md5;
}

Сървър(
слушай 143;
протоколна карта;
}

Причината е системата за сигурност SELinux.

Решение: деактивирайте или конфигурирайте SELinux.

Nginx набира популярност с бързи темпове, трансформирайки се от просто смачкване на статиката за Apache в напълно функционален и отново отварящ се уеб сървър, който все по-често става в застой. В тази статия ще говорим за cica и нестандартните сценарии на версията на nginx, които позволяват максимален достъп от уеб сървъра.

Публикувайте прокси

Нека започнем с най-очевидното - ролята на nginx като mail proxy. Тази функция е в nginx на гърба, а оста е победител в производството. Без значение как беше, nginx поддържа прокси сървър на POP3, IMAP и SMTP протоколи с различни методи за удостоверяване, включително SSL и StartTLS, и е лесен за работа.

Необходимо ли е? Є як най-малко две zastosuvannya tsієї функционалност. Първо: спечелете nginx като щит срещу досадните спамъри, опитайте се да изпратите списъци със заплахи през нашия SMTP сървър. Звуковите спамъри не създават много проблеми, фрагментите лесно се активират на етапа на удостоверяване, но ако станат твърде богати, nginx ще помогне да се спести ресурси на процесора. Приятел: ping nginx за пренасочване на пингове към POP3/IMAP пощенски сървъри. Zim, очевидно, следващите прокси сървъри ще бъдат въведени, но сега градът на сървърите е ограден, тъй като nginx вече е инсталиран на frontend, за да обработва HTTP статиката, например?

Пощенският прокси сървър на Nginx не е известен по подразбиране. Vіn vikoristovy dodatkovy ball authentifikatsії, реализации чрез HTTP, и е възможно само да се премине през bar'єr, vin премина далеч. Тази функционалност се осигурява от начин за създаване на странична лента/скрипт, който nginx проверява данните на coristuvacha, и го извежда/печели пред стандартното ОК, или предизвиква промяна (като невалидно влизане или парола). Скриптът се стартира със следните заглавки:

Входни данни от скрипта за удостоверяване HTTP_AUTH_USER: CodeWatch HTTP_AUTH_PASS: Парола HTTP_AUTH_PROTOCOL: Протокол за поща (IMAP, POP3 или SMTP)

И го завъртете така:

Изходни данни на скрипта за удостоверяване HTTP_AUTH_STATUS: OK или променете причината HTTP_AUTH_SERVER: истински пощенски сървър за пренасочване HTTP_AUTH_PORT: порт на сървъра

Chudova osoblivіst като pіdhodu в действителност, Scho Yogo mozhna vikoristovuvati zovsіm не samoї autentifіkatsії и обитатели rozkidati koristuvachіv на rіznih vnutrіshnіh сървъри, елен лопатар ОД іmenі koristuvacha, danih за potochnі navantazhennya на poshtovі Специализирани сървъри ABO vzagalі organіzuvavshi nayprostіshe balansuvannya navantazhennya за взаимопомощ кръгла Робин. Vtim, тъй като е по-необходимо да прехвърлите ядрата към вътрешния пощенски сървър, можете да замените истинския скрипт с мъниче, реализирано от самия nginx. Например, най-простият SMTP и IMAP прокси в конфигурацията на nginx ще изглежда така:

# vi /etc/nginx/nginx.conf mail ( # Скрипт за удостоверяване адресира auth_http localhost:8080/auth; # Включете командата XCLIENT, за да деактивирате пощенския сървър и да изключите xclient; # IMAP сървър сървър ( слушайте 143; protocol imap; proxy on; ) # SMTP сървър сървър ( слушайте 25; протокол smtp; прокси включен; ) )

# vi /etc/nginx/nginx.conf http ( # Преобразуването към необходимия порт на пощенския сървър се съхранява в порта, зададен в картата на заглавката на HTTP_AUTH_PROTOCOL $http_auth_protocol $mailport ( по подразбиране 25; smtp 25; imap 143; ) # Внедряване " - завъртете OK и пренасочете обаждащия се към вътрешния пощенски сървър, като зададете необходимия порт в допълнение към картографирания сървър ( слушайте 8080; location /auth ( add_header "Auth-Status" "OK"; add_header "Auth-Server" "192.168 .1). ;add_header " Auth-Port" $mailport; върнете 200; ) ) )

Това е всичко. Тази конфигурация ви позволява прозрачно да пренасочвате съобщенията към вътрешния пощенски сървър, без да създавате по никакъв начин горната част на привидно неприличен скрипт. След като скриптът е инсталиран, тази конфигурация може да бъде значително разширена: коригиране на баланса на суета, пренаписване на файловете за базата на LDAP и промяна на други операции. Написването на скрипта излиза извън обхвата на тази статия, дори е по-лесно да го приложите, да придобиете по-повърхностни познания за PHP и Python.

Поточно видео

Създаването на страхотен видео хостинг на базата на Nginx е лесно. Достатъчно е просто да прекодирате видеото в директория, достъпна за сървъра, да го регистрирате в конфигурацията и да настроите flash- или HTML5-програматора, така че видеото да бъде взето от тази директория. Необходимо е обаче да се създаде непрекъснат поток от видео от някакъв вид отдалечен джерел или уеб камера, такава схема не работи и може да се чудите на специалните протоколи за стрийминг.

Є k_lka protocolіv, scho vyrіshuyut tse zavdannya, най-ефективният и поддържа RTMP. Не е толкова лошо, че всички реализации на RTMP сървър страдат от проблеми. Официалният Adobe Flash Media Server е платен. Red5 и Wowza са написани на Java, което не дава необходимата производителност, друга реализация, Erlyvideo, е написана на Erlang, която е добра при настройка на клъстер, но не е толкова ефективна за един сървър.

Е, ще разпространя още един pidhid - ускоряване на RTMP модула за nginx. Vіn maє чудотворни produktіvnіnіnі и преди това, нека vikoristovuvat един сървър, който да обслужва както уеб интерфейса на сайта, така и видео потока. Единственият проблем е, че този модул е ​​неофициален, така че nginx може да го вземе сам. За щастие сгъването се извършва по стандартен начин:

$ sudo apt-get премахнете nginx $ cd /tmp $ wget http://bit.ly/VyK0lU -O nginx-rtmp.zip $ unzip nginx-rtmp.zip $ wget http://nginx.org/download/nginx- 1.2.6.tar.gz $tar -xzf nginx-1.2.6.tar.gz $cd nginx-1.2.6 $./configure --add-module=/tmp/nginx-rtmp-module-master $make$ sudo направи инсталиране

Сега модулът трябва да бъде конфигуриран. За да се борите, както винаги, чрез конфигурацията на nginx:

Rtmp ( # Активиране на сървъра на живо на порт 1935 зад сървъра на сайта/rtmp (слушайте 1935; rtmp на приложението (на живо; ) ))

RTMP модулът не работи в богата конфигурация за стрийминг, така че броят на работните процеси на nginx ще достигне скорост от един (ще ви кажа по-късно, за да избегнете този проблем):

работни_процеси 1;

Сега можете да запазите файла и да прочетете отново конфигурацията на nginx. Инсталацията на nginx е завършена, но самият видео поток все още не е възможен, така че трябва да го вземете тук. Например, нека поставим файла video.avi в директорията на потока. За да включим йога в движение и да я обвием в нашия RTMP-mover, нека ускорим добрия стар FFmpeg:

# ffmpeg -re -i ~/video.avi -c copy -f flv rtmp://localhost/rtmp/stream

Ако преглежданият видео файл не е във формат H264, трябва да го кодирате повторно. Tse може да се роби на много с помощта на същия FFmpeg:

# ffmpeg -re -i ~/video.avi -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream

Potik може да се поръча директно от уеб камерата:

# ffmpeg -f video4linux2 -i /dev/video0 -c:v libx264 -an -f flv rtmp://localhost/rtmp/stream

За да разгледате потока от страна на клиента, можете да ускорите дали това е вид поддръжник на RTMP, например mplayer:

$mplayer rmtp://example.com/rtmp/stream

В противен случай можете да получите програмата директно на уеб страницата, тъй като изглежда, че е същият nginx (пример от официалната документация):

Най-простата уеб RTMP програма

Има само два важни реда: "file: "stream"", който показва RTMP потока, и "streamer: "rtmp://localhost/rtmp"", който определя адреса на RTMP streamer. За повече задачата на такива налащувани ще е достатъчна. За един адрес можете да стартирате няколко различни потока и nginx ефективно ги мултиплексира между клиенти. Алес далеч не е всичко, което представлява модулът за изграждане на RTMP. С тази помощ, например, можете да организирате повторното предаване на видео потока от друг сървър. FFmpeg сървърът не е необходим за тази цел, достатъчно е да добавите следващите редове към конфигурацията:

# vi /etc/nginx/nginx.conf приложение rtmp (на живо; издърпайте rtmp://rtmp.example.com; )

Тъй като е необходимо да създадете редица потоци с различен капацитет, можете да извикате FFmpeg рекодер директно от nginx:

# vi /etc/nginx/nginx.conf приложение rtmp (на живо; exec ffmpeg -i rtmp://localhost/rtmp/$name -c:v flv -c:a -s 320x240 -f flv rtmp://localhost /rtmp-320x240/$name; ) приложение rtmp-320x240 (на живо; )

За помощ на такава конфигурация ще вземем два браузъра, единият от които ще бъде достъпен на адрес rtmp://site/rtmp, а другият, който работи като 320x240, на адрес rtmp://site/rtmp –320x240. След това можете да добавите флаш плейър към сайта и бутони за избор на сила, която ще изпрати плейъра на адреса на браузъра.

Е, и накрая задницата на движението на музиката в мярка:

докато е вярно; do ffmpeg -re -i ``намери /var/music -type f -name "*.mp3"|sort -R|head -n 1`" -vn -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream; готово

Git прокси

Системата за контрол на версиите Git е предназначена да осигури достъп до хранилището не само за Git и SSH протоколите, но и за HTTP. Ако внедряването на HTTP достъп беше примитивно и безплатно, това би осигурило пълна работа с хранилището. От версия 1.6.6 ситуацията се промени и днес протоколът може да бъде обърнат, например, заобикаляйки защитната стена на защитната стена, както и от другата й страна, или създавайки хостван Git хостинг с уеб интерфейс.

Жалко, официалната документация говори само за организиране на достъп до Git с помощта на уеб сървъра Apache, но самата реализация е най-новата програма със стандартен CGI интерфейс, на практика можете да я прецакате на всеки друг сървър, включително lighttpd, nginx. За което не е необходимо нищо, освен самия сървър, инсталиран Git и малкия FastCGI сървър fcgiwrap, което е необходимо, тъй като nginx не може да работи с CGI без посредник, но може да извика скриптове за помощ на протокола FastCGI.

Цялата схема на роботите изглежда така. Сървърът fcgiwrap е във фонов режим и времето за проверка се изисква към CGI допълнението. Nginx, в най-добрия случай, ще бъде принуден да поиска git-http-backend CGI двоичния файл чрез FastCGI-интерфейса, за да се придвижи до посочения от нас адрес. След извличане на входа, fcgiwrap наблюдава git-http-backend от зададените CGI аргументи, предадени от GIT клиента, и завърта резултата.

За да приложим такава схема, ще добавим fcgiwrap в началото:

$ sudo apt-get install fcgiwrap

Не е необходимо да го настройвате, всички параметри се предават от протокола FastCGI. Пускането на VIN също ще бъде автоматично. Ето защо е твърде много да се коригира nginx. За това създаваме файла /etc/nginx/sites-enabled/git (тъй като няма такава директория, можете да пишете в основната конфигурация) и пишем преди следващата стъпка:

# vi /etc/nginx/sites-enabled/git server ( # В зависимост от порта 8080 слушайте 8080; # Адреси на нашия сървър (не забравяйте да добавите DNS запис) server_name git.example.ru; # Регистри достъп_лог /var/ log/nginx /git-http-backend.access.log;error_log /var/log/nginx/git-http-backend.error.log; arg_service ~* "git-receive-pack") ( пренапишете ^ /private$uri последно; ) включва /etc/nginx/fastcgi_params; # Адреси на нашия git-http-backend fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Адреси на хранилището на Git fastcgi_param GIT_PROJECT_ROOT /srv/git; # Fastcgi_param файлови адреси PATH_INFO $uri; # Адреси на сървъри fcgiwrap fastcgi_pass 127.0.0.1:9001; ) # Адреси за достъп за запис . )$ ( # Актуализиран auth_basic "git анонимен само за четене, удостоверено записване"; # HTTP удостоверяване въз основа на htpasswd auth_basic_user_file /etc/nginx/htpasswd; # Персонализиран FastCGI и nclude /etc/nginx/fastcgiit_param lib; fastcggipt_param -core/git-http-backend; fastcgi_param GIT_PROJECT_ROOT /srv/git; fastcgi_param PATH_INFO $1; fastcgi_pass 127.0.0.1:9001; )

Тази конфигурация изпраща три важни думи:

  1. Адресите на хранилището ще бъдат /srv/git, можете да зададете съответните права за достъп: $ sudo chown -R www-data:www-data /srv/git
  2. Самото хранилище е виновно, че не се чете от анонимни потребители и позволява качвания през HTTP: $ cd /srv/git $ git config core.sharedrepository true
  3. Изисква се удостоверяване за помощния htpasswd файл, трябва да го създадете и да го добавите към новия код: $ sudo apt-get install apache2-utils $ htpasswd -c /etc/nginx/htpasswd user1

Това е всичко за сега, презаредете nginx:

Микрокеш

Ние сме наясно със ситуацията с динамичен, често актуализиран сайт, голяма амбиция(е, след като сте похарчили виното на страната на един от най-големите сайтове за новини) и спрете да се справяте със съдържанието. Компетентната оптимизация и прилагането на правилната схема за осребряване ще отнеме много време и проблемите трябва да бъдат решени наведнъж. На какво можем да повлияем?

Фен Бейли, fennb.com, пропагандира идеята за няколко начина да се излезе от тази ситуация с най-малко разходи. Идеята е просто да се постави пред сървъра на nginx и да се кешира цялото съдържание, което се предава, и не само кеш, а само за една секунда. Rodzinka тук е за този, който стотици и хиляди гледания към сайта за секунда всъщност генерират само едно връщане към бекенда, отнемайки най-голямата кеширана страна. На тази цена едва ли си струва да се помни, защото една секунда не означава нищо на динамичен сайт.

Конфигурацията от реализацията на идеята не изглежда толкова чиста:

# vi /etc/nginx/sites-enabled/cache-proxy # Задаване на кеша proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:5m max_size=1000m; сървър ( слушайте 80; server_name example.com; # Адрес, кеширано местоположение / ( # Активиране на кеша за промоутъри, задайте $no_cache ""; # Активиране на кеша за всички методи, крем GET и HEAD if ($request_method !~ ^(GET|HEAD) ) $) ( задайте $no_cache "1"; ) # За да позволите на клиента да грабне съдържанието на сайта (no_cache = 1), е безопасно да се уверите, че данните, които ви се предоставят, не се кешират за двама секунди и спечелете резултата от грабването if ( $no_cache = "1") ( add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; ) if ($ http_cookie ~* "_mcnc") ( задайте $ no_cache "1"; ) # Разрешаване/деактивиране на остарелия кеш в бъдеще no_cache proxy_no_cache $no_cache; proxy_cache_bypass $no_cache; # Прокси към истинския сървър proxy_pass http://appserver.example. ru; proxy_cache microcache; pro$y_$ request_uri; proxy_cache_valid 200 1s;# Откриване на проблем Гръмотевично стадо proxy_cache_use_stale актуализиране;# Добавяне на стандартен хедър proxy_set_h хедър Host $host; proxy_set_he ader X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Не може да се кешират файлове, по-големи от 1 Mb proxy_max_temp_file_size 1M; )

Специално място в тази конфигурация заема редът "proxy_cache_use_stale updating;", без който приемахме периодични изблици на трафик към бекенд сървъра чрез заявки, които идваха на всеки час от обновяването на кеша. Иначе всичко е стандартно и може да се разбере без обяснение.

Прокси в близост до CA

Независимо от глобалното повишаване на интернет сигурността, физическото разстояние на сървъра до целевата аудитория продължава да играе своята роля. Това означава, че руският сайт ще се върти на сървър, който ще бъде инсталиран някой ден в Америка, достъпът до новия ще бъде априори по-добър, по-нисък от руския сървър със същата ширина на канала (е, това е като да си сплескате очите на всички други фактори). Вдясно е най-вероятно да разположи сървъри извън кордона, включително плана за обслужване. Следователно, в името на печалбата, външният вид е по-голям висока скорост vіddachi, случайно отидете на хитър.

Една от възможните опции: хостване на основния продуктивен сървър на Zahodі и дори не по-мощен за ресурсите на интерфейса, което позволява статика да се разпространява на територията на Русия. Tse позволяват без сериозни витрати да спечелят при shvidkost. nginx config за интерфейса, в който случай ще простим и всички знаем изпълнението на прокси сървъра:

# vi /etc/nginx/sites-enabled/proxy # Запазване на кеша за 30 дни при 100 GB съхранение proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static:32m неактивен=30d max_size=100g; сървър ( слушайте 80; server_name example.com; # Е, нашето прокси местоположение ~ * .(jpg|jpeg|gif|png|ico|css|midi|wav|bmp|js|swf|flv|avi|djvu|mp3) $ ( # Backend адреси proxy_pass back.example.com:80; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_x; proxy_add_x_forwarded_x; proxy_3_ore "proxy_3" Изтича"; proxy_cache_key "$uri$is_args$args"; proxy_cache_lock включен; ) )

Висновки

Днес с помощта на nginx можете да разбиете безименните задачи, много от които не са свързани с уеб сървъра и HTTP протокола. Прокси за електронна поща, сървър за стрийминг и Git интерфейс са само някои от тези задачи.

iRedMail - готов за съхранение на пощенски сървър с валиден код за изход. Складът е базиран на Postfix SMTP сървър (Mail Transfer Agent, MTA за кратко). Колекцията включва още: Dovecot, SpamAssassin, Greylist, ClamAV, SOGo Roundcube, NetData и NGINX.

Гълъбарник- IMAP/POP3 сървър.

Спамасасин- Филтриране на спам.

Сив списък- Zasіb борба срещу спама въз основа на sіrih списъци.

ClamAV- Антивирусна.

Кръгло кубчеі SOGo- Уеб клиенти за роботи с електронна поща.

Нетни данни- Програма за наблюдение на сървърни роботи в реално време.

Nginx- Уеб сървър.

Поддържащи операционни системи: CentOS 7, Debian 9, Ubuntu 16.04/18.04, FreeBSD 11/12і OpenBSD 6.4.

iRedMail има както платени, така и безкасови версии, които са една в една и съща функционалност на собствения уеб интерфейс на папката за поща iRedAdmin. Във версията без копия вече не можете да създавате домейни, да публикувате екрани на користувачи и администратори. Ако трябва да създадете псевдоним, тогава няма да можете да създадете версия без код чрез iRedAdmin. За щастие това е безплатно решение, тъй като се нарича PostfixAdmin, което ви позволява да го внедрите. PostfixAdmin е лесен за влизане в iRedMail и прави чудеса с него.

Инсталиран

За инсталация ни трябва една от по-големите операционни системи. Ще туитвам на Ubuntu Server 18.04. Освен това можете да закупите име на домейн и да настроите DNS зона. За да спечелите DNS сървъра на вашия регистратор на домейни, е необходимо да разделите два записа за управление на домейн зоната: A и MX. Можете също така да настроите своя собствен DNS, като настроите делегиране в специален офис на вашия регистратор на имена на домейни.

Корекция на домейн зона pіd час vikoristannya DNS регистратор

Вземете уважение! Час nabuttya nalashtuvan DNS за няколко години до един tizhnya. Докато поръчката не бъде завършена, пощенският сървър няма да работи правилно.

За да инсталирате, изтеглете текущата версия от сайта iRedMail. Днес 0.9.9.

# wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2

Да разопаковаме архивите.

# tar xjf iRedMail-0.9.9.tar.bz2

Разопаковане на архива

Отивам до създадената папка.

# cd iRedMail-0.9.9

Папка с инсталатор на iRedMail

Проверка в папки

Пространство за папка

І стартирам инсталационния скрипт на iRedMail.

# bash iRedMail.sh

Ще започне инсталирането на пощенската система. Процесът на инсталиране ще изисква ниска мощност. Да изчакаме инсталацията.

Cob vstanovlennya

Изберете инсталационна директория

Сега трябва да изберете уеб сървър. Изборът е малък, така че изберете NGINX.

Изберете уеб сървър

Сега е необходимо да изберете сървър на база данни, който ще бъде инсталиран и актуализиран на робота с пощенска система. Изберете MariaDB.

Изберете сървър на база данни

Задайте root парола за базата данни.

Създайте парола за база данни

Сега определяме нашия пощенски домейн.

Създаване на пощенски домейн

Нека създадем парола на екрана на администратора [защитен с имейл] domain.ru.

Създаване на парола на администратор на поща

Изберете Уеб компоненти

Потвърдено от поправката.

Потвърждение за потвърждение

Инсталацията работи.

Инсталиран

След като инсталацията приключи, правилото се потвърждава iptablesза SSHи рестартирайте защитната стена. iRedMail работи iptables. В Ubuntu най-често се настройва помощната програма за управление на защитната стена UVW. Ако имате такава нужда, тогава инсталирайте UVW (apt инсталирайте ufw) и добавете правилата, които b UVW(Дупето: ufw разреши "nginx пълен"или ufw разреши Postfix), без да блокира робота на пощенския сървър. Можете да прегледате списъка с налични правила с помощта на командата: ufw списък с приложения. Да забележим UVW: ufw активиране.

Създаване на правило на iptables

Рестартиране на защитната стена

На която инсталацията на iRedMail е завършена. Системата ни даде адресите на уеб интерфейсите и данните за влизане. За да надстроите всички компоненти на пощенската система, трябва да преконфигурирате сървъра.

Завършване на монтажа

Да се ​​ангажираме отново.

# рестартиране

Nalashtuvannya

За кочана е необходимо да се perekonatsya, че всичко работи. Нека се опитаме да отидем в панела за вход в iReadAdmin за адреса https://domain/iredadmin. Влизам [защитен с имейл] domain.ru, паролата е създадена по време на инсталацията. Є Руски интерфейс.

Як бачимо, всичко работи. При влизане в iRedAdmin вие, по-добри за всичко, отнехте прошка за безопасност, обвързана със сертификат. Зависи от факта, че iRedMail може да има пришит самоподписан сертификат, на който браузърът е инсталиран. За да разрешите този проблем, трябва да инсталирате валиден SSL сертификат. Ако имате покупки, можете да инсталирате йога. В приложението ще инсталирам безценен SSL като Let's Encrypt.

Инсталиране на Let's Encrypt SSL сертификат

Инсталирайте сертификата за допълнителната помощна програма certbot. Додамо хранилище в движение.

# add-apt-repository ppa:certbot/certbot

Нека инсталираме самия certboot с необходимите компоненти.

# подходяща инсталация на python-certbot-nginx

Взимаме сертификата.

# certbot --nginx -d domain.ru

Когато изпълните командата, системата ще ви помоли да въведете имейл адрес, въведете. Поради това приемате прошка за всичко, защото е невъзможно да се знае сървърния блок, за който се генерира сертификатът. В тази ситуация е нормално, нямаме никакви фрагменти от нито един сървърен блок. За нас е гадно да вземем сертификата.

Оттегляне на сертификата

Подобно на Bachimo, сертификатът беше успешно изтеглен и системата ни показа пътищата до самия сертификат и ключа. Смърди ни якраз и имаме нужда. Отнехме 4 файла, които се съхраняват в папката "/etc/letsencrypt/live/domain". Сега е необходимо да съобщим на уеб сървъра за нашия сертификат, за да заменя пришития сертификат с този, който беше отнет от мен. За което трябва да редактираме само един файл.

# nano /etc/nginx/templates/ssl.tmpl

Сменям в новите два оставащи реда.

Сменете SSL сертификат

Променяме пътищата от файла към пътя, както ни каза системата, когато сертификатът е бил изтеглен.

Подмяна на SSL сертификат

І рестартирайте NGINX.

# рестартиране на услугата nginx

Сега опитайте да влезете отново iRedAdmin.

Повторна валидност на SSL сертификата

Няма извинение за удостоверението. Сертификатът е валиден. Можете да натиснете върху замъка и да се чудите на йога на силата. След прекратяване на срока на сертификата за certboot, той може да се актуализира автоматично.

Сега нека поговорим за сертификатите Dovecot и Postfix. Има два конфигурационни файла, за които може да се редактира. Виконуемо:

# nano /etc/dovecot/dovecot.conf

Знаем блок:

#SSL: Глобални настройки.

І миняемо предписване на сертификат за нашите.

Подмяна на сертификат за Dovecot

Обърнете внимание и на реда "ssl_protocols". Моля, помислете за премахването му от ssl_protocols, когато рестартирате Dovecot.

# nano /etc/postfix/main.cf

Знаем блок:

# SSL ключ, сертификат, CA

Променя по нов начин файловете на нашия сертификат.

Промяна на сертификат за Postfix

На кого е завършено инсталирането на сертификата. Необходимо е да рестартирате Dovecot и Postfix или още по-добре да рестартирате сървъра.

# рестартиране на услугата dovecot

# рестартиране

Инсталиране на PHPMyAdmin

Тази точка не е много ясна, но препоръчвам виконати йога и инсталиране на PHPMyAdmin за ръчна работа с бази данни.

# apt инсталира phpmyadmin

Инсталаторът захранва робота с някакъв уеб сървър за настройка на PHPMyAdmin, тъй като NGINX не е в списъка, просто натиснете TAB и тръгваме.

Инсталиране на PHPMyAdmin

След като инсталацията приключи, за да може phpmyadmin да спечели необходимостта от създаване на символна връзка в директорията с някакъв вид заключване, NGINX работи.

# ln -s /usr/share/phpmyadmin /var/www/html

Опитвам се да отида до https://domain/phpmyadmin/

PHPMyAdmin работи. Връзката е защитена със сертификат, няма годишни помилвания. Да тръгваме. Нека създадем администратор на база данни дадох MySQL(MariaDB).

# mysql

І се използва от конзолата за управление на MariaDB. Дайте следните команди на robimo:

MariaDB > СЪЗДАЙТЕ ПОТРЕБИТЕЛ "admin"@"localhost" ИДЕНТИФИЦИРАН С "password";
MariaDB > ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА *.* НА "admin"@"localhost" С ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ;
MariaDB > FLUSH ПРИВИЛЕГИИ;

Създаване на MySQL Koristuvach

Всички ОК, въвеждане на викони. PHPMyAdmin е готов за работа.

Инсталиране на PostfixAdmin

Принципът PostfixAdmin, подобно на PHPMyAdmin, може да не бъде инсталиран. Пощенският сървър е по чудо практичен и без никакви компоненти. Въпреки това, не можете да създавате псевдоними на поща. Ако нямате нужда от нищо, тогава можете смело да го пропуснете. Ако все още имате нужда от псевдоним, тогава имате две възможности: да закупите платена версия на iReaAdmin или да инсталирате PostfixAdmin. Очевидно е възможно да се работи без допълнителен софтуер чрез ръчно записване на псевдоними в базата данни, но не на ръка и не за всеки. Препоръчвам да хакнете PostfixAdmin, който е инсталиран и интегриран с iRedMail с един поглед. Да започнем инсталацията:

# apt install postfixadmin

Нека изчакаме и да създадем парола за системната база данни на програмата.

Инсталиране на PostfixAdmin

Инсталиране на PostfixAdmin

Robimo символна връзка за аналогия преди инсталиране на PHPMyAdmin.

# ln -s /usr/share/postfixadmin /var/www/html

Робимо Користувача, като уеб сървърът се стартира от каталожния мениджър. Нашият тип NGINX работи под името www-data.

# chown -R www-data /usr/share/postfixadmin

Сега трябва да редактираме конфигурационния файл на PostfixAdmin и да добавим към новата информация за базата данни, като iRedAdmin. За популяризиране тази база данни се нарича vmail. Ако отидете на PHPMyAdmin, можете да чатите там. Така че, за да може PostfixAdmin незабавно да прави промени в базата данни, това е написано в конфигурацията на PostfixAdmin.

# nano /etc/postfixadmin/config.inc.php

Знаем редовете:

$CONF["database_type"] = $dbtype;
$CONF["database_host"] = $dbserver;
$CONF["database_user"] = $dbuser;
$CONF["database_password"] = $dbpass;
$CONF["database_name"] = $dbname;

И хвърлих един поглед:

$CONF["database_type"] = "mysqli"; # Тип база данни
$CONF["database_host"] = "localhost"; # Хост на сървър на база данни
$CONF["database_user"] = "администратор"; # Влезте с достъп за запис до базата данни vmail. Можете да фитил преди творения администратор
$CONF["database_password"] = "парола"; # Парола от посочената парола
$CONF["database_name"] = "vmail"; # Име на база данни iRedMail

Въвеждане на информация за базата данни

Ако планирате да спечелите уеб клиента за електронна поща SOGo, ще трябва да създадете още едно допълнение и да запомните криптирането на PostfixAdmin в параграфа $CONF["криптиране"]з "md5crypt"на "гълъбарник:SHA512-CRYPT". Ако нямате нищо против, тогава когато се опитате да оторизирате в SOGo, ние ще го създадем с PostfixAdmin, ще извините за неправилно влизане или парола.

Промяна на типа на криптиране

Сега, за да завършите успешно инсталацията и да не приемате помилвания, е необходимо да изчакате базата данни. Ръчно zrobiti през PHPMyAdmin. Избираме базата данни vmail и отиваме в раздела SQL. На викни влизаме:

DROP INDEX домейн на пощенска кутия;
DROP INDEX домейн на псевдоним;
Псевдоним ALTER TABLE ADD COLUMN `goto` text NOT NULL;

Попитайте до базата данни

Натискам "Напред". Вече сме готови, можете да отидете на уеб интерфейса на PostfixAdmin и да завършите инсталацията. За кой браузър трябва да въведете: https://domain/postfixadmin/setup.php.

Виновен да изглежда така:

Инсталиране на PostfixAdmin

Ако всичко е счупено за инструкции, тогава помилването не е виновно. Ако все още има, тогава трябва да ги извадите, в противен случай системата няма да ви позволи да продължите. Задайте паролата за инсталиране и щракнете върху " Генериране на хеш на паролаСистемата генерира хеш на паролата, който трябва да бъде вмъкнат в параметъра $CONF["setup_password"].

Завършване на инсталацията на PostfixAdmin

Промяна на параметрите в конфигурационния файл

Сега въведете нова парола и създайте администратор на PostfixAdmin. Не създавайте администратор с вход на пощенския администратор, шардовете може да имат проблеми с влизането в административния панел на iRedAdmin.

Създаден от администратор на PostfixAdmin

Всичко, администратор, е направено. Можете да спечелите участието.

Моля, имайте предвид, че от съображения за безопасност е по-добре да преименувате файла setup.php в директорията на postfixadmin или да го изтриете.

Да продължим нататък: https://domain/postfixadmin/и въвеждаме създаването на наклонени данни. PostfixAdmin, подобно на iRedAdmin, има наличен руски език. Можете да промените часа за оторизация.

Нека се опитаме да създадем пощенска екранна снимка на coristuvach.

Уведомяване/Уведомяване на iRedMail модули

Зад iRedMail модулите поддържат iRedAPD. Vіn има конфигурационен файл, в който са регистрирани работещите модули. Ако нямате нужда от друг модул, можете да го премахнете от конфигурационния файл и да спрете да го използвате. Виконуемо:

# nano /opt/iredapd/settings.py

Ние знаем реда" плъгиниИ очевидно нямате нужда от нито един от компонентите. Ще взема компонента "сив списък". Vіn zvichayno dosit ефективно предпазва от спам, но често не достига и необходими листа.

Greylist (sir list) е технология за автоматична защита от спам, базирана на анализа на поведението на сървъра на мейл мениджъра. Когато „сивият списък“ е активиран, сървърът първо ще започне да приема списъци от неизвестен адрес, като ви информира за помилването. В такъв момент сървърът е виновен за повторение на силата отново. Програмите за спамъри наричат ​​това, за да не се свенят. Веднага след като листът се наслагва отново, виното се добавя към списъка за 30 дни и обменът ще бъде изпратен за първи път. Vykoristovuvat tsey модул чи nі vіrіshuyte себе си.

Известие/Предупреждение за изпратени модули

След като направите промените, е необходимо да рестартирате iRedAPD.

# услуга iredapd рестартирайте

Тестване на пощенски сървър

На кого е завършена инсталацията на пощенския сървър на iRedMail. Можете да продължите към последния етап - тестване. Правим две пощенски скрийншота. За perevіrka едната през iRedAdmin, другата през PostfixAdmin и променете списъка от една пощенска кутия в следващата. iRedAdmin има екранна снимка [защитен с имейл] domain.ru. PostfixAdmin - [защитен с имейл] domain.ru

Създаване на потребител в iRedAdmin

Създаване на потребител в PostfixAdmin

Трудно е да се повярва, че користувачите са се случили.

Ако спазвате колоната „До“ в пощенските кутии на PostfixAdmin, можете да маркирате разликата между пощенските кутии, създадени в iRedAdmin и PostfixAdmin. Екранните снимки, създадени в iRedAdmin, са маркирани като " само напред", но създадено в PostfixAdmin като -" пощенска кутияДълго време не можех да разбера защо е толкова различно и как има разлика между тях и попаднах на един стих. Кутиите в iRedAdmin се създават без псевдоними, а кутиите в PostfixAdmin с псевдоним върху себе си.

Ако видите псевдонимите, тогава пощенските кутии ще се показват, сякаш са създадени в iRedAdmin. само напред".

Vydalennya aliasiv

Псевдонимът е премахнат. Проверете PostfixAdmin.

Yak bachimo всички кутии станаха "само напред". Така че само за да създадете в кутия, създадена в iRedAdmin псевдоним върху себе си, тогава ще станете "Пощенска кутия". По принцип не ни пука за практичност. Няма да можете да създадете псевдоним в пощенска кутия, създадена в PostfixAdmin. Замяната на създаването на псевдонима вече ще трябва да бъде преработена. Преди да говорим за псевдоними, в новата версия на iRedMail е необходимо да направите промяна в една от Postfix картите, сякаш е псевдоним. Ако не създадете нещо друго, тогава създаването на псевдоним няма да работи. Кой има нужда от файл /etc/postfix/mysql/virtual_alias_maps.cfправилно:

Виконуемо:

# nano /etc/postfix/mysql/virtual_alias_maps.cf

поправям го.

Nalashtuvannya aliasiv

Рестартирайте Postfix:

# постфикс рестартиране на услугата

Ако не друго, всичко може да се направи.

И така, нека продължим с проверката на пощата отново. Направете чекмедже потребител1ще преминем през Roundcube и ще влезем в кутията потребител 2- чрез SOGo и коригирайте листа от екрана потребител1на потребител 2върнах се.

Укрепване на листа с Roundcube

Вземам лист от SOGo

Укрепване на листа към SOGo

Отстраняване на листа от Roundcube

Всичко работи без проблеми. Доставката на листа отнема от две до пет секунди. Така самите листа се доставят по чудо до сървъра на Yandex и mail.ru (пренаписани).

Сега можем да променим псевдонима. Да направим кутия потребител3и zrobimo псевдоним от екранната снимка потребител1на кутията потребител 2. І коригиран лист от екранната снимка потребител3на кутията потребител1. С кой лист мога да дойда на екрана потребител 2.

Псевдоним за създаване

Укрепване на листа от екранна снимка на user3 до екранна снимка на user1

Премахване на листа на екрана user2

Z робот псевдоним теж мустаци харазд.

Той се протестира на робота на пощенския сървър чрез локалния пощенски клиент. Виждаме го в дупето Mozilla Thunderbird. Нека направим още два користувача: клиент 1і клиент 2. Един екран може да бъде добавен чрез IMAP, в противен случай чрез POP3, и списък с една екранна снимка може да се добави в секунда.

IMAP връзка

Връзка чрез POP3

Принудително прехвърляне на лист от Клиент 1 към Клиент 2.

Издадено от Клиент 1

Отриманя на Клиент 2

Аз в обратен ред.

Издадено от Клиент 2

Отриманя на Клиент 1

Всичко работи.

Как да отидете на адрес: https://domain/netdata, можете да posterigati графики ще се превърне в система.

Висновок

При тази инсталация настройката и тестването на пощенската система iRedMail е завършена. В резултат на това премахнахме напълно безплатен пълен пощенски сървър със силен SSL сертификат, два различни клиента за уеб поща, два контролни панела, както и анти-спам и антивирус, инсталирани в пощата. За вашите нужди можете да замените клиентите за уеб поща с локални пощенски клиенти, като Microsoft Outlook или Mozilla Thunderbird. Ако не планирате да инсталирате пощенски уеб клиенти, не можете да ги инсталирате, така че ние няма да инсталираме сървъра, а ще инсталираме такъв, който ви трябва повече. Особено харесвам SOGo, защото това е интерфейсът за оптимизация за мобилни устройства, по-добре е ръчно да преглеждате имейла от смартфона. Същото трябва да се направи с NetData и iRedAdmin, ако не планирате да го поправите, тогава не го инсталирайте. Tsya пощенската система не е твърде мощна за ресурси. Всичко се основава на VPS сървърис 1024 MB RAM и един виртуален процесор. Тъй като сте загубили храна според дадената пощенска система, пишете в коментарите.

P.S. При тестване на този продукт на различни операционни системи с 1 GB RAM (Ubuntu, Debian, CentOS), беше установено, че 1 GB не е достатъчен за ClamAV. Mayzhe zavzhd с vikoristanny 1 GB памет антивирусна posilavsya за милост pov'yazanu z база данни. В случай на операционни системи Debian и Ubuntu, антивирусът просто не сканира пощата, преминала през сървъра, иначе всичко работеше добре. В CentOS ситуацията беше малко по-различна. Услугата clamd отново затвори системата и в същото време деактивира нормалната работа на сървъра. Когато се опитва да влезе в уеб интерфейса, NGINX периодично вижда 502 и 504 помилвания. Пощата счупи теж по едно време. Ако добавите RAM до 2 GB, тогава всички видове ежедневни проблеми с роботизираната антивирусна програма и сървъра не изчезнаха. ClamAV сканира пощенския сървър, как да преминете през пощенския сървър, за писане в логовете. При тестване вирусът беше блокиран в депозитната кутия. Възстановяването на паметта беше около 1,2 - 1,7 GB.

Nginx- Малък извън света, по-шведски, функционален уеб сървър и пощенски прокси сървър, търговец на дребно Игор Сисоев (rambler.ru). Чрез дъга от малки спестявания на ресурси, сигурността и роботиката на системата, както и гъвкавостта на конфигурацията, интернет nginx сървърчесто побеждава като фронтенд към по-важни сървъри, като напр Apache, в проекти с високи амбиции. Класическият вариант е zv'yazuvannya, Nginx - Apache - FastCGI. Практикувайте с такава схема, nginx сървър, приемете всички заявки, които могат да бъдат достъпни чрез HTTP, и в резервния вариант в конфигурацията и самата заявка, проверете дали сами да обработите заявката и инструктирайте клиента, че съм готов да изпратя заявката, или да предостави заявката за обработка, един от бекендовете ( Apacheили FastCGI).

Очевидно сървърът Apache, кожата се обработва в отделен процес (нишка), както се изисква да се каже, е необходимо да се направи с голям брой системни ресурси, например има 10-20 такива процеса, не е много, а ако са 100-500 и повече, системата не е забавна.

Нека се опитаме да идентифицираме такава ситуация. Да кажем нататък Apacheидват 300 HTTP заявки от клиенти, 150 клиента седят на мобилни видео линии и още 150, на същия брой интернет канали, да не използваме модеми. Какво мислите за тази ситуация? И на следващата стъпка, уеб сървърът Apache, за да обработва 300 дни, създава върху кожата чрез процеса (поток), съдържанието на вината се генерира бързо и 150 бързи клиенти веднага ще вземат резултата от своите заявки, процесите на тяхното обслужване ще бъдат убити в ресурса и още 150, а резултатите от вашите заявки ще бъдат събрани правилно, чрез тесен интернет канал, след което в системата има 150 процеса Apache, какво да проверя, ако клиентите отнемат генерираното от уеб сървъра съдържание, поглъщайки много системни ресурси. Очевидно ситуацията е хипотетична, но мисля, че разбрах същността. Коригирайте описаната по-горе ситуация и подпомогнете комуникацията. След прочитане на цялата заявка от клиента, виното се прехвърля към обработката Apache, който генерира съдържание със собствено темпо и го превръща възможно най-бързо и е готов да поддържа Nginx, ако можете със спокойна съвест да убиете процеса и да извикате системни ресурси, като заемане на вино. Nginx уеб сървър, отримащ резултата от заявката vіd Apache, запишете го в буфера или го запишете във файл на диска и може би малко повече за дълго време, за да го дадете на правилните клиенти, докато го правите, работният процес използва толкова малко ресурси, че .. "е смешно да се говори за това" ©. :) Такава схема, за пестене на системни ресурси, повтарям, но работните процеси на Nginx спестяват малко количество ресурси, а това е по-важно за страхотни проекти.

И само малка част от факта, че сървърът Nginx е в него, не забравяйте за възможността за кеширане на данни и робота memcached. Ще изброя основните функционалност Nginx уеб сървър.

Функционалност на Nginx сървър като HTTP сървър

  • обработка на статично съдържание, индексни файлове, изброяване на директории, кеш на дескриптори за отворени файлове;
  • Ускорено proksuvannya z kashuvannya, rozpodіl navantazhennya, че vіdmovostіykіstyu;
  • Ускорена pidtrimka FastCGIсървъри за пари в брой, rozpodіl navantazhennya и vіdmovostіykіstyu;
  • Модулна структура, поддръжка на различни филтри (SSI, XSLT, GZIP, изтегляне, изход на парчета);
  • SSL поддръжка и TLS SNI разширение;
  • базиран на ipили въз основа на имевиртуални сървъри;
  • Роботът с KeepAlive и конвейер от z'ednannami;
  • Възможност за конфигуриране на всякакви таймаути и брой буфери, на равни Apache сървър;
  • Vikonannya raznomanіtnyh dіy zalezhno vіd адреса на клиента;
  • Промяна на URI за допълнителни обикновени вируси;
  • Специални страни на помилване за 4xx и 5xx;
  • Размяна на достъп въз основа на адрес или парола на клиента;
  • Корекция на форматите на лог файловете; въртене на трупи;
  • Обмяна на охрана за клиента;
  • Размяна на редица едночасови връзки и напитки;
  • Поддръжка на методите PUT, DELETE, MKCOL, COPY и MOVE;
  • Промяна на актуализацията на сървъра без зъбите на робота;
  • Събуждам се Perl;

Функционалност на Nginx сървър като пощенски прокси сървър

  • Препращане към IMAP/POP3 бекенд, викорен HTTP сървър за удостоверяване;
  • SMTP препращане към външния HTTP сървър за удостоверяване и препращане към вътрешния SMTP сървър;
  • Намек за обидни методи при удостоверяване:
    • POP3 - USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
    • IMAP - LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
    • SMTP - AUTH LOGI/PLAIN/CRAM-MD5;
  • поддръжка на SSL;
  • отрежете STARTTLS и STLS;

Операционни системи на платформата, поддържани от уеб сървъра Nginx

  • FreeBSD, 3 до 8 - платформи, i386 и amd64;
  • Linux, от 2.2 до 2.6 - i386 платформа; Linux 2.6 - amd64;
  • Solaris 9 - платформи i386 и sun4u; Solaris 10 - i386, amd64 и sun4v платформи;
  • MacOS X платформи ppc, i386;
  • Windows XP, Windows Server 2003; (на Наразина етап бета тестване)

Архитектура и мащабируемост на сървъра Nginx

  • Основният (главен) процес, цаца (включена в конфигурационния файл) от работни процеси, тъй като работи под непривилегировано ядро;
  • Поддръжка за обидни методи за обработка на z'ednan:
    • изберете- Стандартен метод. Модулът Nginx по подразбиране се избира автоматично, тъй като на тази платформа не е намерен ефективен метод. Можете да активирате primus или да деактивирате избора на модула за допълнителни параметри в конфигурацията --with-select_module или --without-select_module.
    • анкета- Стандартен метод. Модулът Nginx по подразбиране се избира автоматично, тъй като на тази платформа не е намерен ефективен метод. Можете да активирате primus или да деактивирате избора на модула за допълнителни параметри в конфигурацията --with-poll_module или --without-poll_module.
    • kqueue - ефективен метод, което се среща на операционни системи FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 и MacOS X.
    • epollе ефективен метод, който работи в Linux 2.6+. Някои дистрибуции, например SuSE 8.2, имат корекции за поддръжка на epoll с ядрото 2.4.
    • rtsig - сигнали в реално време, ефективен метод, който е победител в Linux 2.2.19+. За заключване за цялата система не може да има повече от 1024 сигнала. Това не е достатъчно за сървъри с високи амбиции, необходимо е да се увеличи броят на ядрата за допълнителния параметър на ядрото /proc/sys/kernel/rtsig-max. Въпреки това, като се започне с Linux 2.6.6-mm2, този параметър е ежедневен, естеството на процеса на кожата има много сигнали, чието разширяване се дължи на помощта на RLIMIT_SIGPENDING.
    • Когато perepovnenny череши, nginx сървърхвърляйки и обработвайки сметката с помощта на метода на анкетата доти, ситуацията няма да се върне към нормалното.
    • /dev/ анкета- ефективен метод, който се поддържа в операционни системи Solaris 7 11/99+, HP/UX 11.22+ (пристанище за събития), IRIX 6.5.15+ и Tru64 UNIX 5.1A+.
    • eventport - портове за събития, ефективен метод, който може да се закърпи в Solaris 10. Преди кръпката, трябва да инсталирате кръпка, за да се отървете от паниката на ядрото.
  • Множество възможности за метода kqueue, като EV_CLEAR, EV_DISABLE (за ограничено във времето изтегляне), NOTE_LOWAT, EV_EOF, брой налични данни, код на помилване;
  • Работа с sendfile (FreeBSD 3.1+, Linux 2.2.+, Mac OS X 10.5+), sendfile64 (Linux 2.4.21+) и sendfilev (Solaris 8 7/01+);
  • Настройка на филтъра за приемане (FreeBSD 4.1+) и TCP_DEFER_ACCEPT (Linux 2.4+);
  • За 10 000 неактивни HTTP поддържания, се изразходват приблизително 2.5M памет;
  • Минимален брой операции за копиране на данни;

Този материал ще бъде представен като NGINX Plus или NGINX отворен кодкато прокси за пощенски сървър или външна пощенска услуга.

Въведение

NGINX може да прокси IMAP, POP3 и SMTP протоколи до един от горните пощенски сървъри, които хостват пощенски акаунти и по този начин могат да бъдат обърнати за имейл клиенти. Те могат да донесат редица предимства, като например:

  • лесно мащабиране на броя на пощенските сървъри
  • избор на пощенски сървър въз основа на различни правила, например, избор на най-близкия сървър въз основа на IP адреса на клиента
  • разпределяне на натоварването между пощенските сървъри

Предпоставки

    NGINX Plus (изисква се разширено активиране на имейл за трафик на прокси имейл) или NGINX Open Source компилира пощенските модули, използвайки параметъра --with-mail за функционалност на прокси сървъра на имейл и параметъра --with-mail_ssl_module за поддръжка на SSL/TLS:

    $ ./configure --with-mail --with-mail_ssl_module --with-openssl=[DIR] /openssl-1.1.1

    IMAP, POP3 и/или SMTP пощенски сървъри или външна пощенска услуга

Конфигуриране на SMTP/IMAP/POP3 Mail Proxy сървъри

NGINX конфигурационен файл:

    поща (#...)

    поща (име на_сървър mail.example.com; #...)

    поща (име_на_сървър mail.example.com; auth_http localhost: 9000 /cgi-bin/nginxauth.cgi; #...)

    Е, особено, ако можете да кажете на измамника за помилвания като сървър за удостоверяване, като посочите директивата proxy_pass_error_message. Това може да е удобно, когато паметта на пощенската кутия свърши:

    поща (име на сървъра mail.example.com; auth_http localhost: 9000 /cgi-bin/nginxauth.cgi; proxy_pass_error_message on; #...)

    Налащувайте дали SMTP, IMAP или POP3 сървър със сървърни блокове. За скин сървър посочете:

    • на номер на пристанищекакво е необходимо на директивата за слушане, за да се съобрази със специалния протокол
    • на протоколс протоколната директива (ако не е посочена, ще бъде автоматично открита от порта, посочен в директивата за слушане)
    • разрешено методи за удостоверяванес директиви imap_auth, pop3_auth и smtp_auth:

    сървър ( слушайте 25 ; протокол smtp ; smtp_auth вход обикновен cram-md5 ; ) сървър ( слушайте 110 ; протокол pop3 ; pop3_auth обикновен apop cram-md5 ; ) сървър ( слушайте 143 ; protocol imap ; )

Настройка на удостоверяване за пощенски прокси

POP3/IMAP/SMTP ще поиска от клиента първо да удостовери външен HTTP сървър за удостоверяване или чрез скрипт за удостоверяване. Наличието на сървър за удостоверяване е задължително за NGINX mail server proxy. Сървърът може да бъде създаден за помощ в резервния вариант като протокол за удостоверяване NGINX, който се основава на HTTP протокола.

Ако удостоверяването е успешно, сървърът за удостоверяване ще избере сървър нагоре по веригата и ще пренасочи заявката. Според вас промяната на сървъра ще се формира от напредващите редове:

HTTP/1.0 200 OK Auth-Status: OK Auth-Server: # името на сървъра или IP адреса на сървъра нагоре по веригата, който ще се използва за обработка на пощаПорт за удостоверяване: # портът на сървъра нагоре по веригата

Ако удостоверяването е неуспешно, сървърът за удостоверяване ще върне съобщение за грешка. Според вас промяната на сървъра ще се формира от напредващите редове:

HTTP/1.0 200 OK Състояние на удостоверяване: # съобщение за грешка, което да бъде върнато на клиента, например „Невалидно влизане или парола“Удостоверяване-Изчакайте: # броят оставащи опити за удостоверяване до затваряне на връзката

Имайте предвид, че и в двата случая отговорът ще съдържа HTTP/1.0 200 ОКкоето може да е объркващо.

За да научите повече за сървъра за удостоверяване на сървъра за удостоверяване, ngx_mail_auth_http_module в справочната документация на NGINX.

Настройка на SSL/TLS за Mail Proxy

Използвайки POP3/SMTP/IMAP през SSL/TLS, можете да видите как данните се предават между клиента и имейл сървъра.

За да активирате SSL/TLS за имейл:

    Уверете се, че вашият NGINX е конфигуриран с поддръжка на SSL/TLS, като въведете командата nginx -V в командния ред и след това потърсите реда with -mail_ssl_module в изхода:

    $nginx -V аргументи за конфигуриране: ... с-mail_ssl_module

    Уверете се, че имате сървърни сертификати и частни ключове и ги поставете на сървъра. Сертификат може да бъде получен като доверен сертифициращ орган (CA) или генериран от допълнителна SSL библиотека, като OpenSSL.

    ssl включен;

    стряска;

    Допълнителни SSL сертификати: посочете пътя към сертификатите (който е този във формат PEM) от директивата ssl_certificate и посочете пътя до частния ключ в директивата ssl_certificate_key:

    поща ( #... ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/certs/server.key;)

    Можете да туитвате само силни версии и шифри от SSL/TLS с текстове директиви ssl_process и ssl_ciphers или можете да инсталирате предпочитаните от вас протоколи и шифри:

    поща ( #... ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; ssl_ciphers HIGH:!aNULL:!MD5 ; )

Оптимизиране на SSL/TLS за Mail Proxy

Тези съвети ще ви помогнат да направите вашия NGINX mail прокси по-бърз и по-сигурен:

    Набиране на номера на работни процеси, които се появяват в директивата worker_processes за броя на процесорите, зададена на същото ниво като контекста на пощата:

    worker_processes auto; поща (#...)

    Активирайте споделения кеш на сесията и деактивирайте вградения кеш на сесията с автоматично; поща (име на_сървъра mail.example.com; auth_http localhost: 9000 /cgi-bin/nginxauth.cgi; proxy_pass_error_message включено; ssl включено; ssl_certificate /etc/ssl/certs/server.certi; T2 ;ssl_ciphers HIGH:!aNULL:!MD5 ; ; protocol pop3 ; pop3_auth обикновен apop cram-md5 ; ) сървър ( слушайте 143 ; protocol imap ; ) )

    Според мен има три електронни прокси сървъра: SMTP, POP3 и IMAP. Всички сървъри, конфигурирани с поддръжка на SSL и STARTTLS. Параметрите на SSL сесията ще бъдат кеширани.

    Whip прокси сървър HTTP сървър за удостоверяване – тази конфигурация е извън обхвата на тази статия. Всички аларми, докладвани на сървъра, ще бъдат уведомени до клиентите.

окачен