Apache + Nginx - Ubuntu 14.04/16.04/Debian

Про установку и первичную настройку серверной связки Apache + Nginx + Mysql + phpmyadmin для ubuntu 12.04 я уже писал, теперь то же самое для Ubuntu 14.04/16.04 и Debian.
В новых релизах появилась следующая версия apache — 2.4, в которой изменились конфигурационные файлы, синтаксис команд и ещё всякие другие штуки.
Список изменений
Apache
В тексте будут выделяться различия в настройках между Ubuntu 14/16 и Debian.
Обновляемся:
sudo apt update
sudo apt upgrade
Устанавливаем:
sudo apt install apache2
Открыв в браузере адрес сервера вы должны увидеть такую картинку (Ubuntu):

(Debian)

Возвращаемся в терминал и проверяем синтаксис конфигурационных файлов:
sudo apache2ctl -t
Ещё команды проверки
sudo apache2ctl fullstatus — говорит сама за себя
sudo apache2ctl -v — версия apache
sudo apache2ctl -V — подробная инфа
sudo apache2ctl -l — скомпилированные модули
sudo apache2ctl -L — список доступных директив
sudo apache2ctl -t -D DUMP_VHOSTS — инфа о виртуальных хостах
sudo apache2ctl -t -D DUMP_RUN_CFG — с каким настройками запущен сервер
sudo apache2ctl -t -D DUMP_MODULES — какие модули загружены
sudo apache2ctl -v — версия apache
sudo apache2ctl -V — подробная инфа
sudo apache2ctl -l — скомпилированные модули
sudo apache2ctl -L — список доступных директив
sudo apache2ctl -t -D DUMP_VHOSTS — инфа о виртуальных хостах
sudo apache2ctl -t -D DUMP_RUN_CFG — с каким настройками запущен сервер
sudo apache2ctl -t -D DUMP_MODULES — какие модули загружены
Наблюдаем вот такие сообщения:

Синтаксис в порядке, однако не определенно доменное имя сервера. Ничего страшного в этом нет, но выглядит некрасиво. Исправить ситуацию очень просто, надо в конфигурационный файл сервера
Мы не только добавим строчку, но и приведём этот файл к более читабельному виду удалив комментарии.
На всякий случай бекапим файл /etc/apache2/apache2.conf
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
Открываем его:
sudo nano /etc/apache2/apache2.conf
Удаляем всё и вставляем это:
ServerName 127.0.1.1
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
подсказка nano
Сохранить______Выйти

Сохранить______Выйти
Директивы
PidFile ${APACHE_PID_FILE} — файл в который сервер записывает pid (дескриптор) процесса.
Timeout 300 — время в секундах, в течение которого сервер ждет недополученный запрос или продолжает попытки возобновления приостановленной передачи.
KeepAlive On — разрешает (On)/запрещает (Off) клиенту последовательно запрашивать несколько файлов без разрыва TCP соединения.
KeepAliveTimeout 5 — время в секундах до разрыва TCP соединения, которое Apache будет ждать следующего запроса от клиента.
MaxKeepAliveRequests 100 — максимальное количество запросов при одном соединении. Значение 0 снимает ограничения. Для максимального быстродействия рекомендуем высокое значение.
HostnameLookups Off — (on/off/double) определяет имя хоста посетителя по DNS, работает медленно и по умолчанию отключена.
ErrorLog ${APACHE_LOG_DIR}/error.log — путь к логу ошибок (/var/log/apache2/).
LogLevel warn — (emerg/alert/crit/error/warn/notice/info/debug) уровень информативности лог-файла сервера.
Timeout 300 — время в секундах, в течение которого сервер ждет недополученный запрос или продолжает попытки возобновления приостановленной передачи.
KeepAlive On — разрешает (On)/запрещает (Off) клиенту последовательно запрашивать несколько файлов без разрыва TCP соединения.
KeepAliveTimeout 5 — время в секундах до разрыва TCP соединения, которое Apache будет ждать следующего запроса от клиента.
MaxKeepAliveRequests 100 — максимальное количество запросов при одном соединении. Значение 0 снимает ограничения. Для максимального быстродействия рекомендуем высокое значение.
HostnameLookups Off — (on/off/double) определяет имя хоста посетителя по DNS, работает медленно и по умолчанию отключена.
ErrorLog ${APACHE_LOG_DIR}/error.log — путь к логу ошибок (/var/log/apache2/).
LogLevel warn — (emerg/alert/crit/error/warn/notice/info/debug) уровень информативности лог-файла сервера.
Сохраняем и перезапускаем сервер:
sudo service apache2 restart
Для Ubuntu 16 и Debian можно это делать через systemctl
sudo systemctl restart apache2
Проверяем:
sudo apache2ctl -t

Предупреждение исчезло.
Теперь в браузере запросим несуществующий файл — адрес/blabla, и получим сообщение об ошибке:

Сообщение содержит информацию о сервере. В этом нет ничего плохого, но и хорошего тоже нет, поэтому запретим вывод этой инфы отредактировав файл /etc/apache2/conf-available/security.conf
sudo nano /etc/apache2/conf-available/security.conf
Находим строчки:
ServerTokens OS
ServerSignature On
Меняем их на:
ServerTokens Prod
ServerSignature Off
Сохраняем файл и рестартуем apache:
sudo service apache2 restart
Обновляем страницу в браузере:

Так будет лучше...
Подключим модуль rewrite (скорее всего он понадобится)
sudo a2enmod rewrite
Рестартуем:
sudo service apache2 restart
Сейчас сервер работает по дефолтному конфигу (/etc/apache2/sites-available/000-default.conf), а файл index.html находятся в папке /var/www/html/. Если у вас один сайт и он не нуждается в PHP, Mysql и каких-то хитроумных настройках, то достаточно забросить свои файлы в эту папку и назначив пользователя и группу…
sudo chown -R www-data:www-data /var/www/html
… посмотреть результат…
sudo ls -l /var/www/html
… приступать к эксплуатации сайта.
Если требуются дополнительные настройки, то они делаются в файле /etc/apache2/sites-available/000-default.conf
sudo nano /etc/apache2/sites-available/000-default.conf
Если редактировали, то не забудьте перезапустить сервер.
Теперь немного об организации файлов сервера Apache.
Для удобства установите и запустите Midnight Commander.
sudo apt install mc
sudo mc
Перейдите в папку /etc/apache2

apache2.conf — конфигурационный файл сервера.
envvars — здесь хранятся переменные окружения.
magic — идентификация неизвестных файлов (не ст
ports.conf — настройка портов.
В папках *-available находятся основные конфиги (conf), модули (mods) и конфиги виртуальных хостов (sites).
В папках *-enabled находятся активированные (инициализированные) конфиги, модули и виртуальные хосты (перед именем стоит значок @).
Активировать и деактивировать эти файлы можно с помощью специальных команд, а чтоб изменения вступили в силу нужно рестартовать сервер.
Файлы из папки conf-available активируются командой a2enconf, а деактивируются командой a2disconf.
Для примера отключим файл security.conf:
sudo a2disconf security.conf
После этого он исчезнет из папки conf-enabled.
Включим security.conf:
sudo a2enconf security.conf
Файл появится в папке conf-enabled.
Модули из папки mods-available включаются/отключаются командами a2enmod и a2dismod.
Пример с модулем rewrite:
sudo a2enmod rewrite
Вкл.
sudo a2dismod rewrite
Откл.
Посмотреть какие модули есть в репозитории:
sudo apt-cache search libapache2*
Установить нужный модуль:
sudo apt install название модуля
Конфигурационные файлы виртуальных хостов из папки sites-available включаются/отключаются командами a2ensite и a2dissite.
Пример включения/отключения дефолтного виртуального хоста 000-default.conf:
sudo a2ensite 000-default.conf
Вкл.
sudo a2dissite 000-default.conf
Откл.
На время оставим apache в покое и перейдём к установке PHP…
PHP
Установка для Ubuntu 14 и Debian:
sudo apt install php5 libapache2-mod-php5 php5-mcrypt
Для Ubuntu 16:
sudo apt install php7.0 php-pear libapache2-mod-php7.0 php7.0-mysql
Создайте файл для проверки работы PHP:
sudo nano /var/www/html/check.php
Вставьте строчку:
<?php phpinfo(); ?>
Сохраните и закройте.
Открыв в браузере ссылку — адрес/check.php, вы увидите информацию о PHP:



Узнать наличие модулей php в репозитории можно так (Ubuntu 14 и Debian)
sudo apt-cache search php5-
(Ubuntu 16)
sudo apt-cache search php7.0-
Установка модулей:
sudo apt install название модуля
Mysql
Установка для Ubuntu 14 и Debian:
sudo apt install mysql-server php5-mysql
Для Ubuntu 16:
sudo apt install mysql-server php7.0-mysql
В процессе нужно будет придумать пароль администратора
Пароль не должен совпадать с паролем администратора компьютера.

PhpMyAdmin
Установка для Ubuntu 14 и Debian:
sudo apt install phpmyadmin php-gettext
Установка для Ubuntu 16:
sudo apt install phpmyadmin php7.0-mbstring php-gettext
Выбираем сервер (клавишей пробел):

Здесь нужно ответить Да:

Здесь нужно ввести пароль, который вы придумали ранее для пользователя root Mysql (будьте внимательны, этот пункт может отсутствовать):

Здесь придумайте пароль для автоматически создаваемой базы phpmyadmin:

Дожидаемся окончания установки и переходим в браузере по ссылке — адрес/phpmyadmin

Выбираем русский язык, вводим пользователя (root) и пароль. Заходим в базу и вершим там свои великие дела.
Теперь надо сделать так, чтоб никто не знал где находится ваша база данных. Для этого необходимо изменить путь к phpmyadmin в файле /etc/phpmyadmin/apache.conf.
Открываем файл:
sudo nano /etc/phpmyadmin/apache.conf

Изменим строчку:
Alias /phpmyadmin /usr/share/phpmyadmin
На что-нибудь нелепое:
Alias /xrennaideshmyphpmyadmin /usr/share/phpmyadmin

Сохраняем и рестартуем apache:
sudo service apache2 restart
С этого момента адрес PhpMyAdmin знаете только Вы, а заходить в него будете так:
адрес/xrennaideshmyphpmyadmin
Nginx
Nginx будет принимать запросы на стандартном (80-ом) порту и передавать их апачу, который нужно перекинуть на другой порт, например на 81-ый, и разрешить ему принимать только локальные запросы. То есть апач будет невидим извне.
Редактируем файл /etc/apache2/ports.conf
sudo nano /etc/apache2/ports.conf
Меняем строку:
Listen 80
на
Listen localhost:81

Открываем конфиг сайта:
sudo nano /etc/apache2/sites-available/000-default.conf
Меняем строку:
<VirtualHost *:80>
на
<VirtualHost localhost:81>

Сохраняем и рестартуем apache:
sudo service apache2 restart
Теперь сайт виден только на localhost:81. То есть, удалённо вы на сайт зайти не можете.
Устанавливаем Nginx
sudo apt install nginx
Рестартуем nginx чтоб посмотреть нет ли ошибок:
sudo service nginx restart
Если всё хорошо, то для ubuntu 14 будет написано — * Restarting nginx nginx…

… а для ubuntu 16 и debian никаких сообщений не будет.
Команды для проверки nginx
sudo nginx -h — помощь.
sudo nginx -v — версия.
sudo nginx -V — опций, с которыми запущен сервер.
sudo nginx -t — проверка синтаксиса конфигов.
sudo nginx -v — версия.
sudo nginx -V — опций, с которыми запущен сервер.
sudo nginx -t — проверка синтаксиса конфигов.
Зайдите в браузер и обновите страничку. Если у вас Ubuntu 14, то увидите это…

… а если Ubuntu 16 или Debian, то будет уже знакомая картинка:

В данный момент, контент отдаёт nginx, а apache не участвует в работе. Чтобы убедится в этом, нужно открыть лог nginx'а:
sudo tail -f /var/log/nginx/access.log
Обновив страничку в браузере вы увидите логи доступа:

А если открыть лог apache:
sudo tail -f /var/log/apache2/access.log
То ничего происходить не будет.
Организация файлов nginx схожа с apache:

В sites-available лежит конфиг виртуального хоста (default), а в sites-enabled ссылка инициализирующая виртуальный хост (@default).
nginx.conf — конфиг сервера, вот он то нам и нужен.
Сделаем его бекап:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
И откроем:
sudo nano /etc/nginx/nginx.conf
Удалим закомментированные строки чтоб было читабельно, разрешим сжатие данных (gzip) и отключим папку /etc/nginx/conf.d/ так как она пустая. Получим аккуратный файлик…
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
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_vary on; # Разрешить выдавать в ответе строку заголовка "Vary: Accept-Encoding"
gzip_proxied any; # Разрешить сжатие для всех проксированных запросов
gzip_comp_level 6; # Степень сжатия (от 1 до 9 цифра больше увеличивает степень сжатия и увеличивает нагрузку на ЦПУ)
gzip_buffers 16 8k; # Размер буферов, в которые будет сжиматься ответ
gzip_http_version 1.1; # Устанавливает минимальную HTTP-версию запроса для сжатия ответа
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
#include /etc/nginx/conf.d/*.conf; # Если папка conf.d пустая, то можно закомментировать
include /etc/nginx/sites-enabled/*;
}
Теперь нам нужен конфиг сайта. Сделаем копию…
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
Откроем:
sudo nano /etc/nginx/sites-available/default
Удаляем всё и вставляем это:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.html index.php index.htm;
server_name localhost;
# 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
location ~ /\.ht {
deny all;
}
# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит 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 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
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
Открываем лог apache:
sudo tail -f /var/log/apache2/access.log
Обновляем страничку в браузере и видим логи:

Apache включился в работу. Все запросы идут от nginx с локального адреса (127.0.0.1).
Для того чтоб apache получал ip-адреса клиентов нужно установить модуль libapache2-mod-rpaf
sudo apt-get install libapache2-mod-rpaf
Запустите лог nginx:
sudo tail -f /var/log/nginx/access.log

Здесь нормальные адреса.
Осталось проверить доступность PhpMyAdmin зайдя по — адрес/xrennaideshmyphpmyadmin/index.php (если не открывается, то посмотрите не появился ли в адресной строке 81-ый порт и удалите его).
Несколько сайтов
На сервере будет два сайта — istarik.ru и irinartzone.ru…
Apache
Удаляем папку /var/www/html, больше она не понадобится:
sudo rm -rf /var/www/html
Создаём в корневой директории сервера две отдельные папки, в них будут размещены сайты:
sudo mkdir /var/www/istarik
sudo mkdir /var/www/irinartzone
У Вас будут свои названия папок.
И копируем в эти папки содержимое своих сайтов. Если сайтов пока нет, тогда создаём index-файлы с соответствующим содержимым:
sudo nano /var/www/istarik/index.php
Вставить это:
<?php echo "istarik"; ?>
sudo nano /var/www/irinartzone/index.php
Вставить это:
<?php echo "irinartzone"; ?>
Задаём пользователя и группу для них:
sudo chown -R www-data:www-data /var/www/istarik
sudo chown -R www-data:www-data /var/www/irinartzone
Отключаем дефолтный конфиг апача:
sudo a2dissite 000-default.conf
Создаём из дефолтного конфига, конфиги новых сайтов:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/istarik.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/irinartzone.conf
Дефолтный конфиг можно удалить:
sudo rm /etc/apache2/sites-available/000-default.conf
Редактируем конфиг первого сайта:
sudo nano /etc/apache2/sites-available/istarik.conf
Удаляем всё (или редактируем) и делаем как в примере. Изменяем название сайта и меняем путь к папке:
<VirtualHost localhost:81>
ServerAdmin webmaster@localhost
ServerName istarik.ru
ServerAlias www.istarik.ru
DocumentRoot /var/www/istarik
<Directory /var/www/istarik/>
# Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
То же самое для второго сайта:
sudo nano /etc/apache2/sites-available/irinartzone.conf
<VirtualHost localhost:81>
ServerAdmin webmaster@localhost
ServerName irinartzone.ru
ServerAlias www.irinartzone.ru
DocumentRoot /var/www/irinartzone
<Directory /var/www/irinartzone/>
# Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Активируем сайт istarik:
sudo a2ensite istarik.conf
Проверяем синтаксис:
sudo apache2ctl -t
Рестартуем apache:
sudo service apache2 restart
Идём в браузер и проверяем.
Чтоб проверить работу второго сайта надо отключить первый:
sudo a2dissite istarik.conf
Активируем сайт irinartzone:
sudo a2ensite irinartzone.conf
Проверяем синтаксис:
sudo apache2ctl -t
Рестартуем apache:
sudo service apache2 restart
Проверяем в браузере…
И снова активируем сайт istarik:
sudo a2ensite istarik.conf
Рестартуем apache:
sudo service apache2 restart
Nginx
Создаём из дефолтного конфига, конфиги для istarik и irinartzone:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/istarik.conf
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/irinartzone.conf
Удаляем дефолтный конфиг и ссылку на него:
sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
Редактируем первый сайт:
sudo nano /etc/nginx/sites-available/istarik.conf
Удаляем всё (или редактируем) и вставляем это:
server {
listen 80;
root /var/www/istarik;
index index.html index.php index.htm;
server_name istarik.ru www.istarik.ru;
# xrennaideshmyphpmyadmin - это ваш секретный путь к phpMyadmin, таким образом всё
# что касается phpMyadmin, будет отдавать Apache и страница будет корректно отображаться.
# Картинки и прочее отдаёт Nginx
location ~* ^(?!/xrennaideshmyphpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|b$
access_log off;
expires 30d;
}
# запрет на доступ к .htaccess
location ~ /\.ht {
deny all;
}
# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит 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 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Сохраняем.
Создаём ссылку на новый конфиг:
sudo ln -s /etc/nginx/sites-available/istarik.conf /etc/nginx/sites-enabled/istarik.conf
Рестартуем nginx:
sudo service nginx restart
Проверяем в бруазере…
Чтоб отключить конфиг его нужно просто удалить из папки /etc/nginx/sites-enabled и перезапустить сервер.
Редактируем второй сайт:
sudo nano /etc/nginx/sites-available/irinartzone.conf
Делаем так:
server {
listen 80;
root /var/www/irinartzone;
index index.html index.php index.htm;
server_name irinartzone.ru www.irinartzone.ru;
# запрет на доступ к .htaccess
location ~ /\.ht {
deny all;
}
# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит 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 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Сохраняем.
Создаём ссылку на второй конфиг:
sudo ln -s /etc/nginx/sites-available/irinartzone.conf /etc/nginx/sites-enabled/irinartzone.conf
Рестартуем nginx:
sudo service nginx restart
Чтоб убедится в работе irinartzone отключите конфиги istarik в apache и nginx.
На этом всё, дополнительные настройки, равно как и работа с CMS выходят за рамки этого повествования...
И таки да, без сомнения, это apache apache apache nginx надо обязательно прочитать или по крайней мере ознакомиться...

- +277
- stD
36658
Поддержать автора
Комментарии (42)
Зачем закрывать 81-й порт?
Просто так порты закрывать нельзя, многие из них используются. Это тема обширная и требующая вдумчивого изучения.
Есть ещё такой момент:
При определенных запросах получал 413 (Request Entity Too Large)
Пришлось прописать в ngnix.conf
Правильно ли это? Или может есть какие нибудь рекомендации?
Настроил 4 сайта по разделу «Несколько сайтов» до этого настраивал по другим статьям не много кривовато было, но хоть как то работало. А после настройки по данной статье на отрез перестали работать все начали ссылаться на один и тот же сайт.
Разбирался около часа в чем дело. Я настраивал apache на 8080 порт.
И проблема была в том что у одного сайта был хост указан как:
<VirtualHost localhost:8080>
А у других:
<VirtualHost *:8080>
И в итоге все ссылались на сайт у которого хост был указан через localhost. С начало думал проблема в переменной localhost, оказалось нет все норм. Надо просто все сайты настраивать одинаково так:
<VirtualHost localhost:8080>
или так:
<VirtualHost *:8080>
и все будет работать! Главное что бы все сайты были одинаково настроены.
P.S. Сначала когда разобрался с проблемой думал просто уйти как обычно и не чего не написать, но в этот раз че то совесть замучила подумал вдруг у кого то тоже такая проблема будет и он так же как и я будет мучится. И так как это самая грамотная и актуальная статья из найденных мной решил все же оставить комент, в благодарность автору!
А если так:
То апач будет виден извне, на 8080-ом порту.
Виртуальные хомты можно настраивать как угодно:
<VirtualHost localhost:8080>
<VirtualHost *:8082>
<VirtualHost *:80>
<VirtualHost localhost:8088>
<VirtualHost localhost:81>
Весь вопрос в доменных именах и видимости/невидимости извне, а так же прокроксировании/не проксировании нгисом.
Listen 80
на
Listen localhost:81
Подскажите пожалуйста почему после смены этого пункта апач не хочет запускаться, ошибка —
(98)Address already in use: AH00072: make_sock: could not bind to address 127.0.0.1:81
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
И еще вопрос у меня чего то не хочет записывать данные в бд после такой связки nginx + apach. Когда сам апач работает то все хорошо, а в связки не хочет (
…
А что с БД?
[code]
Осталось проверить доступность PhpMyAdmin зайдя по — адрес/xrennaideshmyphpmyadmin/index.php (если не открывается, то посмотрите не появился ли в адресной строке 81-ый порт и удалите его).
[/code]
По такой схеме работает половина интернета, сайтов может быть сколько угодно, просто добавляйте их по описанной схеме.
С WordPress я не знаком, чтоб ссылки работали, нужно редиректы правильно настроить.