Установка Apache + Mysql + Nginx
Установка Apache
Действия производятся на Ubuntu 12.04 server
Вначале установим и настроим Apache, чтобы им можно было пользоваться в полной мере, а после добавим проксирующий сервер Nginx для ускорения отдачи контента.
Если система ставится с нуля, то при установке указываем LAMP (Linux Apache MySQL PHP)
Если ОС уже есть, то одной командой обновляем систему, установливаем Apache, Mysql и phpMyAdmin:
sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y install lamp-server^ && sudo apt-get -y install phpmyadmin
Ключ -y отвечает согласием на установку.
Отдельно MySQL:
sudo apt-get install mysql-server mysql-client php5-mysql phpmyadmin
В процессе нужно будет придумать пароль (запишите на бумажку) администратора Mysql:
Пароль не должен совпадать с паролем администратора компьютера.
Выбрать сервер для phpMyAdmin:
На этот вопрос отвечаем Нет:
После этих процедур перезапускаем Apache, чтоб посмотреть нет ли предупреждений или ошибок:
sudo service apache2 restart
Может появиться вот такое сообщение:
Исправим это...
Редактируем файл /etc/apache2/httpd.conf:
sudo nano /etc/apache2/httpd.conf
Добавляем строку:
ServerName localhost
Сохраняем…
подсказка nano
Сохранить______Выйти
Сохранить______Выйти
И перезапускаем Apache:
sudo service apache2 restart
Теперь всё чистенько...
Идём в браузер — ip-сервера и видим:
Сервер работает...
Заходим в phpMyAdmin — ip-сервера/phpmyadmin
Вводим логин root и пароль, который придумывали раннее и нажимаем ОК…
Apache, Mysql и php работают...
В целях безопасности, внесём небольшие поправки в файл /etc/apache2/conf.d/phpmyadmin.conf
sudo nano /etc/apache2/conf.d/phpmyadmin.conf
Изменим строчку:
Alias /phpmyadmin /usr/share/phpmyadmin
На что-нибудь нелепое:
Alias /xrennaideshmyphpmyadmin /usr/share/phpmyadmin
И в блок <Directory /usr/share/phpmyadmin> добавим разрешение на доступ только с Вашего ip.
Order Deny,Allow
Deny from all
Allow from 132.28.31.134 # Ваш ip или localhost
Вот так:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
</IfModule>
Order Deny,Allow
Deny from all
Allow from 132.28.31.134 # Ваш ip
</Directory>
Сохраняем и рестартуем Apache:
sudo service apache2 restart
Теперь адрес phpMyAdmin знаете только Вы, а заходить в него будете так:
ip-сервера/xrennaideshmyphpmyadmin
Продолжим настройку Apache
Сейчас, если взломщик запросит у Вашего сервера несуществующую страницу, то узнает имя ОС и версию сервера:
Это нужно запретить...
Редактируем файл /etc/apache2/conf.d/security
sudo nano /etc/apache2/conf.d/security
Находим строчки:
ServerTokens OS
и
ServerSignature On
Меняем их на:
ServerTokens Prod
и
ServerSignature Off
Сохраняем и рестартуем Apache:
sudo service apache2 restart
Теперь выглядит так:
Затруднили жизнь хулиганам...
Создаём файл .htaccess (если существует, то пропускаем этот пункт) в дефолтной пакпке /var/www/:
sudo touch /var/www/.htaccess
Редактируем:
sudo nano /var/www/.htaccess
Вставляем строки:
AddDefaultCharset UTF-8 # страницы будут отдаваться в UTF-8 кодировке
Options -Indexes # запрещаем просмотр папок сервера
RewriteEngine On # редирект
Сохраняем…
Чтоб .htaccess стал доступным, редактируем файл /etc/apache2/sites-available/default
sudo nano /etc/apache2/sites-available/default
В блоке:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Правим строчку:
AllowOverride None
на
AllowOverride All
Сохраняем и рестартуем Apache:
sudo service apache2 restart
Apache готов к работе.
Закидываем свой сайт в папку /var/www/
Владельцем папки со всем содержимым, делаем пользователя www-data
sudo chown -R www-data:www-data /var/www
Подключим модуль rewrite
sudo a2enmod rewrite
Рестартуем Apache:
sudo service apache2 restart
И можем пользоваться...
Nginx
Nginx — простой, быстрый и надёжный сервер. Применяется чаще всего для статических веб-сайтов и как прокси-сервер перед динамическими сайтами.
Иными словами, Nginx ставится «перед» Apache и занимается отдачей статического контента (картинки, архивы, css, pdf и т.д.). Apache же занимается обработкой php-файлов и прочей «динамики».
Тем самым увеличивается производительность сервера.
Установка
Прежде всего нужно перекинуть Apache на другой порт (8080) и сделать его локальным.
На стандартном порту (80) будет висеть Nginx.
Таким образом Apache не будет виден извне, а принимать запросы будет Nginx.
Редактируем файл /etc/apache2/ports.conf
sudo nano /etc/apache2/ports.conf
Меняем строчки:
NameVirtualHost *:80
Listen 80
на
NameVirtualHost localhost:8080
Listen localhost:8080
Сохраняем...
Редактируем файл /etc/apache2/sites-available/default
sudo nano /etc/apache2/sites-available/default
Меняем строчку:
<VirtualHost *:80>
на
<VirtualHost localhost:8080>
Сохраняем и рестартуем Apache:
sudo service apache2 restart
Теперь сайт виден только на localhost:8080
Устанавливаем Nginx:
sudo apt-get install nginx
Дожидаемся завершения установки и стартуем Nginx
sudo service nginx restart
Пишем в браузере — ip-сервера и видим:
Работает...
Редактируем файл /etc/nginx/nginx.conf
sudo nano /etc/nginx/nginx.conf
Удаляем всё и делаем как в примере ниже:
user www-data; # Юзер от которого работает nginx
worker_processes 2; # Эта цифра должна соответствовать числу ядер у процессора
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
gzip_min_length 1100;
gzip_proxied any;
gzip_comp_level 4;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
#include /etc/nginx/naxsi_core.rules;
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
#include /etc/nginx/conf.d/*.conf; # если папка conf.d пустая, то можно закомментировать
#include /etc/nginx/sites-enabled/*; # Отключаем дефолтный файл, так как все настройки находятся тут
server {
listen 80;
server_name istarik.ru www.istarik.ru; # Название Вашего сайта
root /var/www/; # пака сервера (вдруг у Вас другая)
index index.html index.php;
#### xrennaideshmyphpmyadmin - это ваш секретный путь к phpMyadmin, таким образом всё
#### что касается phpMyadmin, будет отдавать Apache и страница будет корректно отображаться.
#### Картинки и прочее отдаёт Nginx
location ~* ^(?!/xrennaideshmyphpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:8080/; # Порт на котором висит Apache
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
}
Обратите внимание на комментарии.
Смотрите ниже «виртуальные хосты», там больше настроек.
Рестартуем Nginx
sudo service nginx restart
Возвращаемся в браузер, вводим адрес и видим свой сайт...
Последний штрих, сейчас в логе доступа (/var/log/apache2/access.log), показывается локальный ip (127.0.0.1). Это происходит потому что Nginx проксирует соединение.
(В принципе этого можно не делать и довольствоваться полноценным логом nginxа)
Исправим ситуацию установкой модуля libapache2-mod-rpaf
sudo apt-get install libapache2-mod-rpaf
Проверяем логи:
sudo tail -f /var/log/apache2/access.log
Чёртовы боты...)
Теперь у Вас работает связка Apache + Nginx
Несколько виртуальных хостов
На сервере будет два сайта — istarik.ru и stdelectronic.ru...
Apache
Создаём в корневой директории сервера две отдельные папки, в них будут размещены сайты:
sudo mkdir /var/www/istarik
sudo mkdir /var/www/stdelectronic
У Вас будут свои названия папок.
И копируем в эти папки содержимое сайтов…
Задаём пользователя и группу для них:
sudo chown -R www-data:www-data /var/www/istarik
sudo chown -R www-data:www-data /var/www/stdelectronic
Отключаем дефолтный конфиг апача:
sudo a2dissite default
Создаём из дефолтного конфига, конфиги новых сайтов:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/istarik
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/stdelectronic
Дефолтный конфиг можно удалить:
sudo rm /etc/apache2/sites-available/default
… а можно и не удалять...)
Редактируем конфиг первого сайта:
sudo nano /etc/apache2/sites-available/istarik
Добавляем название сайта и меняем путь к папке:
<VirtualHost localhost:8080>
ServerAdmin webmaster@localhost
ServerName istarik.ru #### название Вашего сайта
ServerAlias www.istarik.ru #### алиас Вашего сайта
DocumentRoot /var/www/istarik #### путь к Вашему сайту
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory /var/www/istarik/> #### путь к Вашему сайту
Options Indexes FollowSymLinks MultiViews
AllowOverride None #### если ставится CMS, тогда AllowOverride All
Order allow,deny
allow from all
</Directory>
...
Сохраняем-закрываем...
То же самое для второго сайта:
sudo nano /etc/apache2/sites-available/stdelectronic
<VirtualHost localhost:8080>
ServerAdmin webmaster@localhost
ServerName stdelectronic.ru #### название Вашего сайта
ServerAlias www.stdelectronic.ru #### алиас Вашего сайта
DocumentRoot /var/www/stdelectronic #### путь к Вашему сайту
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory /var/www/stdelectronic/> #### путь к Вашему сайту
Options Indexes FollowSymLinks MultiViews
AllowOverride None #### если ставится CMS, тогда AllowOverride All
Order allow,deny
allow from all
</Directory>
...
Сохраняем-закрываем...
Активируем новые сайты:
sudo a2ensite istarik
sudo a2ensite stdelectronic
Рестартуем Apache
sudo service apache2 restart
Готово...
Nginx
Вначале создадим файл, который будем подключать в секцию проксирования.
Делаем это для того, чтоб основной конфигурационный файл (/etc/nginx/nginx.conf) был покомпактнее.
sudo touch /etc/nginx/proxy
Открываем его:
sudo nano /etc/nginx/proxy
… и вставляем строки:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 10;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
Сохраняем...
Редактируем файл /etc/nginx/nginx.conf
sudo nano /etc/nginx/nginx.conf
Удаляем всё и делаем так:
user www-data;
worker_processes 2; #### Эта цифра должна соответствовать числу ядер у процессора
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
client_max_body_size 50m; #### Описание см. ниже
##### server_names_hash_bucket_size 64;
##### server_name_in_redirect off;
limit_req_zone $binary_remote_addr zone=one:10m rate=25r/s; #### Описание см. ниже
limit_req zone=one burst=30; #### Описание см. ниже
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
gzip_min_length 1100;
gzip_proxied any;
gzip_comp_level 4;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
#####include /etc/nginx/naxsi_core.rules;
#####passenger_root /usr;
#####passenger_ruby /usr/bin/ruby;
#####include /etc/nginx/conf.d/*.conf;
#####include /etc/nginx/sites-enabled/*; #### Отключаем дефолтный файл, так как все настройки находятся тут
####################################################### istarik Первый сайт ##############################
server {
listen 80;
server_name istarik.ru www.istarik.ru; #### название Вашего первого сайта
root /var/www/istarik/; #### путь к Вашему первому сайту
index index.php index.html;
#### Отсекать запрос по ip, зайти на сайт можно только по имени
if ($host !~ ^(ваш_сайт.ru|www.ваш_сайт.ru)$ ) {
return 444;
}
#### Только GET|HEAD|POST запросы
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
#### Отсекаем Referrer-спам, порнуху и прочую нечисть...
if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen|pron|money|free|jwh|speed|test|cash|xxx) ){
return 403;
}
#### Отсекаем качалки сайтов
if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl|msnbot|scrapbot) {
return 403;
}
#### xrennaideshmyphpmyadmin - это ваш секретный путь к phpMyadmin, таким образом всё
#### что касается phpMyadmin, будет отдавать Apache и страница будет корректно отображаться.
#### Картинки и прочее отдаёт Nginx
location ~* ^(?!/xrennaideshmyphpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
access_log off;
expires 30d;
}
#### Запретить доступ к файлам .htaccess и .htpasswd
location ~ /\.ht {
deny all;
}
#### Переход в Apache
location / {
proxy_pass http://127.0.0.1:8080/; #### Порт на котором висит Apache
include /etc/nginx/proxy; #### Подключили раннее созданый файл для проксирования
}
#### Таким образом можно закрыть доступ к какой-то папке всем кроме вашего ip
#### location /папка {
#### allow 2.193.28.195; #### Ваш ip
#### deny all;
#### proxy_pass http://127.0.0.1:8080/папка;
#### include /etc/nginx/proxy;
#### }
} #### конец server istarik
######################################## stdelectronic Второй сайт #################################
server {
listen 80;
server_name stdelectronic.ru www.stdelectronic.ru; #### название Вашего второго сайта
root /var/www/stdelectronic/; #### путь к Вашему второму сайту
index index.php index.html;
#### Отсекать запрос по ip, зайти на сайт можно только по имени
if ($host !~ ^(ваш_сайт.ru|www.ваш_сайт.ru)$ ) {
return 444;
}
#### Только GET|HEAD|POST запросы
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
#### Отсекаем Referrer-спам, порнуху и прочую нечисть...
if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen|pron|money|free|jwh|speed|test|cash|xxx) ){
return 403;
}
#### Отсекаем качалки сайтов
if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl|msnbot|scrapbot) {
return 403;
}
#### Картинки и прочее отдаёт Nginx
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx|svg)$ {
access_log off;
expires 30d;
}
#### Запретить доступ к файлам .htaccess и .htpasswd
location ~ /\.ht {
deny all;
}
#### Переход в Apache
location / {
proxy_pass http://127.0.0.1:8080/; #### Порт на котором висит Apache
include /etc/nginx/proxy; #### Подключили раннее созданый файл для проксирования
}
#### Таким образом можно закрыть доступ к какой-то папке всем кроме вашего ip
#### location /папка {
#### allow 2.193.28.195; #### Ваш ip
#### deny all;
#### proxy_pass http://127.0.0.1:8080/папка;
#### include /etc/nginx/proxy;
#### }
} #### конец server stdelectronic
#### Вот так добавлять другие сайты
####server {
#### ...
####}
} #### конец html
Уделите особое внимание комментариям!
Описание директивlimit_req_zone $binary_remote_addr zone=one:10m rate=25r/s;
Эти директивы предотвратят лёгкую ddos-атаку. Они ограничивают кол-во соединений с одного ip.
zone=one:10m — имя и размер зоны памяти для хранения текущего числа избыточных запросов.
rate=25r/s — кол-во соединений с одного ip в секунду. В данном случае, если с одного ip прийдёт больше 25-ти запросов, то сервер отдаст ошибку.
burst=30 — задаёт максимальный размер всплеска запросов.
Если скорость поступления запросов превышает описанную в зоне «one», то их обработка задерживается и обрабатывается с заданной скоростью «rate=». Избыточные запросы задерживаются до тех пор, пока их число не превысит максимальный размер «burst=», а при его превышении сервер отдаст ошибку 503.
Как настроить
Надо узнать время загрузки без директив и кол-во загруженых файлов:
1. Закомментируйте директивы.
2. Очистите кеш браузера.
3. Откройте лог:
Если у Вас стоит CMS и файлов грузится много (30-40), то оставьте значения директив как есть, раскомментируйте их и повторите операцию с пункта 2.
Если время загрузки сильно увеличилось (на 5-10сек), то увеличьте значение «rate=» и «burst=» на 5-10 и повторите с пункта 2.
И наоборот, если время загрузки не изменилось, то уменьшите значения и добейтесь небольшого (1сек) увеличения времени загрузки.
Опять же надо понимать, что количество отдаваемого контента может увеличиваться и настраивать надо с «запасом».
Иными словами, надо сделать так, чтоб отдавалось всё быстро, но при этом чтоб сервер не расходовал ресурсы понапрасну и не падал.
Не знаю получилось ли у меня донести мысль, но так или иначе надо почитать вот тут.
Если пока не разобрались, то закоментируйте эти директивы. Ничего страшного в этом нет, когда вникните, тогда и включите.
Не спеша буду дополнять описания…
client_max_body_size 50m; — Ограничение размера загружаемого файла на сервер. Большое значение полезно если у Вас файловое хранилище.
А вот это, можно добавить в конфиг сервера для того, чтоб хулиганистые соискатели бэкапов и прочей полезной инфы на вашем сервере таки получали то, что хотели ))).
Идея заключается в том, что если «хулиган» ползает на вашем сервере в поисках файлов типа backup.zip, archive.zip и т.д., получал не просто 404 или 403, а скачивал в течении пары суток вожделенный файлик и при его распаковки «наслаждался» либо ошибкой, либо чем-то ещё.
max_ranges 0; — запрещает докачку.
limit_rate 4k; — ограничивает скорость скачивания.
include param/zone1; — Зона, где разрешен 1 коннект на 1 ип. Главное — limit_conn one 1;, one — это имя вашей зоны.
Файлик myarxiv создаём так:
И делаем его архивом:
limit_req_zone $binary_remote_addr zone=one:10m rate=25r/s;
limit_req zone=one burst=30;
Эти директивы предотвратят лёгкую ddos-атаку. Они ограничивают кол-во соединений с одного ip.
zone=one:10m — имя и размер зоны памяти для хранения текущего числа избыточных запросов.
rate=25r/s — кол-во соединений с одного ip в секунду. В данном случае, если с одного ip прийдёт больше 25-ти запросов, то сервер отдаст ошибку.
burst=30 — задаёт максимальный размер всплеска запросов.
Если скорость поступления запросов превышает описанную в зоне «one», то их обработка задерживается и обрабатывается с заданной скоростью «rate=». Избыточные запросы задерживаются до тех пор, пока их число не превысит максимальный размер «burst=», а при его превышении сервер отдаст ошибку 503.
Как настроить
Надо узнать время загрузки без директив и кол-во загруженых файлов:
1. Закомментируйте директивы.
2. Очистите кеш браузера.
3. Откройте лог:
tail -f /var/log/nginx/access.log
Если у Вас стоит CMS и файлов грузится много (30-40), то оставьте значения директив как есть, раскомментируйте их и повторите операцию с пункта 2.
Если время загрузки сильно увеличилось (на 5-10сек), то увеличьте значение «rate=» и «burst=» на 5-10 и повторите с пункта 2.
И наоборот, если время загрузки не изменилось, то уменьшите значения и добейтесь небольшого (1сек) увеличения времени загрузки.
Опять же надо понимать, что количество отдаваемого контента может увеличиваться и настраивать надо с «запасом».
Иными словами, надо сделать так, чтоб отдавалось всё быстро, но при этом чтоб сервер не расходовал ресурсы понапрасну и не падал.
Не знаю получилось ли у меня донести мысль, но так или иначе надо почитать вот тут.
Если пока не разобрались, то закоментируйте эти директивы. Ничего страшного в этом нет, когда вникните, тогда и включите.
Не спеша буду дополнять описания…
client_max_body_size 50m; — Ограничение размера загружаемого файла на сервер. Большое значение полезно если у Вас файловое хранилище.
А вот это, можно добавить в конфиг сервера для того, чтоб хулиганистые соискатели бэкапов и прочей полезной инфы на вашем сервере таки получали то, что хотели ))).
Идея заключается в том, что если «хулиган» ползает на вашем сервере в поисках файлов типа backup.zip, archive.zip и т.д., получал не просто 404 или 403, а скачивал в течении пары суток вожделенный файлик и при его распаковки «наслаждался» либо ошибкой, либо чем-то ещё.
location ~* "^/(archive|auth|backup|clients|com|dat|dump|engine|files|home|html|index|master|media|my|mysql|old|site|sql|website|wordpress)\.zip$" {
access_log /usr/local/nginx/logs/arxiv.log;
default_type application/zip;
root /usr/local/nginx/html/arxiv;
rewrite ^(.*)$ /myarxiv break;
max_ranges 0;
limit_rate 4k;
include param/zone1;
}
max_ranges 0; — запрещает докачку.
limit_rate 4k; — ограничивает скорость скачивания.
include param/zone1; — Зона, где разрешен 1 коннект на 1 ип. Главное — limit_conn one 1;, one — это имя вашей зоны.
Файлик myarxiv создаём так:
dd bs=1024 count=1572864 </dev/urandom > myarxiv
И делаем его архивом:
echo -ne \\x50\\x4b\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00 | dd conv=notrunc bs=1 count=10 of=myarxiv
Рестартуем Nginx
sudo service nginx restart
На этом всё, заходим в браузер и проверяем...
Добавлять ещё сайты, можно по описаной схеме.
Все директивы прекрасно описаны на оф. сайте Игоря Сысоева (создателя nginx).
Полезные и нужные источники информации Apache ещё и ещё…
И Nginx ещё…
Обсудить на форуме...
- +370
- stD
46603
Поддержать автора
Комментарии (3)