Страница 1 из 1

[How to] ispconfig3 nginx+apache2 на debian

Добавлено: 11 дек 2012, 00:29
shambler81
Как ни странно мануал по подключению ispconfig3 и бэк фронт технологии в интернете имеется, но он настолко кривой что в релаьной жизни их использовать просто технически не возможно. Поскуольку у вас отваллятся webmail phpmyadmin и будут серьезные проблемы с сайтами c www и без них особенно с тему у кого есть www. Буржуйский форум так же разводит руками. Посему пришлось брать все в свои руки и писать все самому. 

Для начала заменим все 80 порты на 82, по хорошему пройдите поменяйте руками все внимательно.
Обратити внимание что в 8080 и тд не должно появиться ничегого вроде 8280 =-O

Код: Выделить всё

sed -ie 's/:80>/:82>/g' /etc/apache2/sites-available/*.vhost

Код: Выделить всё

sed -ie 's/:80>/:82>/g' /etc/apache2/sites-available/default
В моем случае еще пришлось поправить следующий файл /etc/apache2/ports.cong
Рекомендую всеже пройти по всем каталогам и проверить точность высталвленых настроек руками.

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

Код: Выделить всё

/etc/init.d/apache2 restart
02.png
Добавляем 82 порт на внешку, дабы мы могли запускать сайты и с apache и с nginx это очень удобно при разработке сайтов и отладке сервера. Порт не инденксируется поисковыми системами.

Проверяем

Код: Выделить всё

netstat -tunap | grep apache2
tcp6 0 0 :::8080 :::* LISTEN 3044/apache2
tcp6 0 0 :::8081 :::* LISTEN 3044/apache2
tcp6 0 0 :::82 :::* LISTEN 3044/apache2
tcp6 0 0 :::443 :::* LISTEN 3044/apache2

Теперь проверяем http://ваш_сайт.ru:82 должен появиться сайт.
Переходим к настройки шаблонов ispconfig3, для этого отредактируем пару файлов и изменим в них 80 порт на 82

Заходим в настройки

Код: Выделить всё

cd /usr/local/ispconfig/server/
Создаем кастомизацию

Код: Выделить всё

cp conf/apache_ispconfig.conf.master conf-custom/

Код: Выделить всё

cp conf/vhost.conf.master conf-custom/

Код: Выделить всё

vim /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master
Находим строку и заменяем ее на вот такую я бы конечно поспорил с таким топорным способом. Но работает :-[
NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"}
Заменяем на 
NameVirtualHost {tmpl_var name="ip_address"}:82

Код: Выделить всё

vim /usr/local/ispconfig/server/conf-custom/vhost.conf.master
<VirtualHost {tmpl_var name='ip_address'}:{tmpl_var name='port'}>
Меняем
<VirtualHost {tmpl_var name='ip_address'}:82>

Внимательно внесите изменения в даннмо случае после :82 ">" тоже нужна иначе у вас VirtualHost не будет закрыт. ;)
Далее добавляем еще libapache2-mod-rpaf иначе в логах апач будут только 127.0.0.1

Код: Выделить всё

apt-get install libapache2-mod-rpaf
Добавляем директивы в апач

Код: Выделить всё

echo RPAFsethostname On >> /etc/apache2/apache2.conf

Код: Выделить всё

echo RPAFproxy_ips 127.0.0.1 ВАШ_АЙПИ >> /etc/apache2/apache2.conf
Установка NGINX

Код: Выделить всё

apt-get install nginx
Удаляем дефолтный конфиг

Код: Выделить всё

rm /etc/nginx/sites-available/default

Вписываем свой конфиг

Код: Выделить всё

vim /etc/nginx/sites-available/default

Код: Выделить всё

server {
        listen   80 default;
        server_name  _;
        server_name_in_redirect  off;
        resolver  127.0.0.1;
        access_log  /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {

#   пусть до файлов по умолчанию
     root /var/www/$host/web;
#  если в $host содержится ввв то он его удаляет  в противном случае пусть будет /var/www/www.site.ru
#-----------------------------------
 if ($host ~* ^(www\.)(.+)) {
       set $HBW $2;
       root   /var/www/$HBW/web;
}
#-----------------------------------

        access_log off;
        expires 30d;
    }
#------------------------------------ 
#ml htm пришлось вынести в отделный локейшен site.ru/content.html может вообще не существовать,  и если с site.ru/content все сработает правильно то html внесен в отдельный локейшен явно указывается им путь,  при 404  приходится отправлять его на index.php в таком случае если файла локально нет мы уходим в движок сайта и спрашиваем у него  страницу с таким адресом.

location ~* ^.+\.(htm|html)$ {
# данная директива  при отсутствие файла
try_files $uri /index.php;
#   пусть до файлов по умолчанию
     root /var/www/$host/web;
#  если в $host содержится ввв то он его удаляет  в противном случае пусть будет /var/www/www.site.ru
 if ($host ~* ^(www\.)(.+)) {
       set $HBW $2;
       root   /var/www/$HBW/web;
}
###################################################
        access_log off;
        expires 30d;
    }
##------------------------------------

location / {
#if (!-e $request_filename){
#    rewrite ^/(.+) /index.php/$1 break;
#      }

###################################################
#    пусть до файлов по умолчанию
     root /var/www/$host/web;
#  если в $host содержится ввв то он его удаляет
   if ($host ~* ^(www\.)(.+)) {
       set $HBW $2;
        root   /var/www/$HBW/web;
 }
###################################################
    index  index.html index.htm index.php;
        access_log      off;
        proxy_pass http://$host:82;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

#server {
#  server_name petr.klondikegame.ru;
#  access_log  /var/log/ispconfig/httpd/$host/access.log;
# 
#  location / {
#    root /var/www/klondikegame.ru/web/petr;
#    index index.php index.html;
#  }
#}

####################################################
# Настройки для phpmyadmin
 location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
 location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                    
			proxy_pass http://$host:82;
		        proxy_set_header X-Real-IP  $remote_addr;
		        proxy_set_header Host $host;
		        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

               }
 location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }
#Конец phpmyadmin
#####################################################

# Настройки для WEBMAIL
 location /webmail {
               root /var/www/;
               index index.php index.html index.htm;
 location ~ ^/webmail/(.+\.php)$ {
                       try_files $uri =404;
                       root /war/www/webmail;

                        proxy_pass http://127.0.0.1:82;
                        proxy_set_header X-Real-IP  $remote_addr;
                        proxy_set_header Host 127.0.0.1:82/webmail;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

               }
 location ~* ^/webmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /var/www/webmail/webmail;
               }
        }
        location /WebMail {
               rewrite ^/* $host:82/webmail last;
        }
#Конец webmail
#####################################################

#---------------AWSTATS
location ^~ /awstats-icon {
    alias /usr/share/awstats/icon/;
    access_log off;
}
location ^~ /awstatscss {
    alias /usr/share/doc/awstats/examples/css/;
    access_log off;
}
location ^~ /awstatsclasses {
    alias /usr/share/doc/awstats/examples/classes/;                                 
    access_log off;
}
#---------------AVSTATS-END

}   # Закрывает server !!!

Еще один из вариант, исправить хост на локалхост.
proxy_pass http://$127.0.0.1:82;

Обратите внимание данный конфиг написан мной и имеет отличия от всех других предложенных в мануалах по исп конфмигу. Посколкьу тут решена проблема с сайтами c www и без www. Стандартный вариант их просто обрезать. Так же решает проблему с /phpmyadmin, корректная работа webmail

Разрешаем делать аплоад более 1 мегабайта по дефолту

Код: Выделить всё

vim /etc/nginx/nginx.conf
client_max_body_size 124m;

Ну и последний штрих делаем символическую ссылку с roundcube

Код: Выделить всё

ln -s /var/www/apps/roundcube /var/www/apps/webmail
Так же еще рекомендуют добавить
добавить RPAFenable On в apace2.conf но не проверял.

Собственно все должно заработаь.
О совсем забыл ;)

Код: Выделить всё

/etc/init.d/nginx restart 
Оригинал статьи, но тут я ее правлю чаще чем там ;)
Для просмотра ссылок Вы должны быть авторизованы на форуме.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 11 дек 2012, 16:40
mini-server
Сделал Вашу тему Важной, пусть люди по тестируют, может уважаемый SinglWolf включит ее в сборку Простой сервер Debian 6.0 [ISPConfig3] + скачать.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 11 дек 2012, 17:06
shambler81
mini-server писал(а):Сделал Вашу тему Важной, пусть люди по тестируют, может уважаемый SinglWolf включит ее в сборку Простой сервер Debian 6.0 [ISPConfig3] + скачать.
Отдельно нужно будет сделать location для ваших IP иначе доступ до сайтов по IP будет возможен толко через :82 посколкьу root будет содержать /var/www/11.11.11.1/web
Все остальное работает. Дополнительно потом подключу еще кеш и темп nginx-a в отдельной области памяти, посколкьуо по предварительным тестам производительность поднялась почти в 100 раз но требуется красиво написать location.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 17 дек 2012, 17:58
shambler81
добавлено новое правило позволяющее корректно отрабатывать сайты на движках site.ru/content работало корректно посколкьу mod_rewrite у нас работает хорошо
а вот site.ru/content.html уже nginx ищет именно в корне сайта. Теперь при отсутствие данных файлов в каталоге запрос автоматичеки перекидывается на index.php
Проверено работает, код ответа сервера 200 OK

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 19 дек 2012, 22:17
shambler81
Добавлены локейшены для AWSTATS

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 20 дек 2012, 22:41
shambler81
Исправлена критическая ошибка приводящая к забавным последствиям
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$
заменен на
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$
Кто скажет что происходило в первом случае ? :-D :-D

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 21 дек 2012, 01:06
mini-server
shambler писал(а):Исправлена критическая ошибка приводящая к забавным последствиям
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$
заменен на
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$
Кто скажет что происходило в первом случае ? :-D :-D
Интересно! Что же?
Для просмотра ссылок Вы должны быть авторизованы на форуме. я использовал в nano /etc/nginx/sites-available/default:

Код: Выделить всё

[...]
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {
[...]
И работало! ;D

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 21 дек 2012, 15:51
shambler81
Подсказка
косяк нашел на вот этой страничке, сейчас она уже работает но в то время выдалвала через nginx 404
;)

Со старой версией конфига создайте страницу с таким алиасом и она в nginx отдаст 404
Для просмотра ссылок Вы должны быть авторизованы на форуме.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 24 дек 2012, 15:29
shambler81
в общем все просто все слова заканчивающиеся на jpg xls js и так далее отрабатывали по этому локейшену, поскольку точка не экранировалась и просто не принималась условием посему правило было длы js а не для .js поскольку в линуксе расширения вещь услованая этого вполне хватало для отработки кооректных правил до момента когда ссылка заканчивается на эти забавные окончания ;) в таком случае он их искал именно в этой папке.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 10 янв 2013, 16:48
shambler81
найдена еще одна мелочь которая сейчас исправляетс. если кто то знает как буду рад помощи
Но толкьо при наложение двух особенностей решеных ранее
1 www в root
2. если сайт имеет конечную ссылку .html

В общем
если сайт Для просмотра ссылок Вы должны быть авторизованы на форуме.
(сайт на движке просто в конце у всех урлов html)
то отдает 404

Почему два правила одновременно не отрабатывают не могу найти.

Недочет где то тут

Код: Выделить всё

location ~* ^.+\.(htm|html)$ {
# данная директива  при отсутствие файла
try_files $uri /index.php;
#   пусть до файлов по умолчанию
     root /var/www/$host/web;
#  если в $host содержится ввв то он его удаляет  в противном случае пусть будет /var/www/www.site.ru
 if ($host ~* ^(www\.)(.+)) {
       set $HBW $2;
       root   /var/www/$HBW/web;
}
###################################################
        access_log off;
        expires 30d;
    } 

Код: Выделить всё

2013/01/10 14:44:25 [error] 13198#0: *10167 open() "/var/www/lorena-salon.ru/web/fotoepilyatsiya.html" failed (2: No such file or directory), client: 217.21.214.50, server: _, request: "GET /fotoepilyatsiya.html HTTP/1.1", host: "www.lorena-salon.ru", referrer: "http://www.lorena-salon.ru/"

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 10 янв 2013, 19:02
mini-server
может из списка выше (jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3) убрать html дело в том что nginx обрабатывает статику а у вас скорее всего страница динамическая и получается что заместо подгрузки php nginx пытается обработать как реальный html/

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 11 янв 2013, 13:24
shambler81
не их там уже давно нет я же файлик постоянно доправляю и проблему с попыткой nginx обработаьть настоящий хтмл уже решил посмотри в самом начале он постоянно меняется и я дописываю что и зачем поменял. В данном случае у тебя просто старыая версия в той тчо лежит сейчас уже нет html а он вынесен в отдельный локейшен try_files $uri /index.php;

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 22 янв 2013, 17:18
shambler81
Переписываю конфиг под новый nginx
Так же прийдется дописать код дабы генирировались виртуальные сервера для прокси nginx используя базу испа согалсно api
1. Прийдется выхватывать с базы Алиасы ибо прокси сервер их не понимает подставляя их в root и редиректы
2. То же самое с доменами 3 уровня и подкаталогом. ( хотьи не рекомендовал бы вообще так делать поскольку настройки php.ini такого юмара тоже не понимают. Но всеже функционал сохранить нужно.
Может что то еще упустил ?
3. избавиться от if в root при создание серверов.
4. айпи адрес сайта отличный от * выхватывтать с базы

Может еще что то пропустил что еще не работает через nginx ?

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 04 мар 2013, 09:55
nooleg
Не судите строго за некомпетентность, но возник вопрос...
Что и куда необходимо прописать в ISPConfig с nginx для того чтобы адрес типа: Для просмотра ссылок Вы должны быть авторизованы на форуме. в строке браузера выглядел как: Для просмотра ссылок Вы должны быть авторизованы на форуме. , а адреса находящиеся в папке admin (Для просмотра ссылок Вы должны быть авторизованы на форуме.....) отображались как есть.
Заранее огромное спасибо, а то уже мозг кипит из-за этого Google.


Некоторое время спустя записал в ISPConfig в опциях сайта nginx:
location / {
try_files $uri $uri/ /index.php?npv=$uri&$args;
index index.php index.html index.htm;
}
Немного поработало, а потом вообще сайт стал выдавать ошибку 500 на index.php, даже без параметров. :-|

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 22 мар 2013, 17:05
shambler81
ну для начала у вас доступны обычные и банальные редиректы в .htaccess
сделайте обычнй редирект Для просмотра ссылок Вы должны быть авторизованы на форуме. на Для просмотра ссылок Вы должны быть авторизованы на форуме.
или непосредственно сделайте номральную ссылку в самом движке.
Как вариант сделать локейшен в nginx
но это будут хорошие костыли поскольку реальный сайт если не будет отдавать такую страницу то нужно будет ему подкладывать другую.
А это не совсем тру, вы при переносе на другой сервер просто замучиетесь, мой вам совет прсото сделайте нормальыне настройки в самом сайте.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 22 апр 2013, 05:16
heartrage
Сделал всё по описанию. Но не понял куда вписать proxy_pass http://$127.0.0.1:82; и в каком именно месте в файле /etc/nginx/nginx.conf вставить строчку client_max_body_size 124m; Ну и самый главный вопрос, сейчас у меня сайты открываются на примере sait.ru:82, а если просто вписать sait.ru, то долго думает и потом выкидывает на 502 Bad Gateway.
Отдельно нужно будет сделать location для ваших IP иначе доступ до сайтов по IP будет возможен толко через :82 посколкьу root будет содержать /var/www/11.11.11.1/web
Все остальное работает.
И вот тут если можно подробнее. Как сделать, что вписывать туда и куда этот файл потом закинуть?
p.s. заранее спасибо.

Re: [How to] ispconfig3 nginx+apache2 на debian

Добавлено: 22 апр 2013, 12:04
shambler81
Добрый день.
Первое что вы должны понимать, это как работает Nginx фактически он за вас заходит на сайт, и отдает уже то что видит сам.
Следвоаетльно если в не будите этого забывать то все будет просто.

и так что можно сделать.
Для начала выложить логи и конфиги, с телепатией у меня все плохо.
Можно просто прикрепить файлы.

Лог nginx лежит /var/log/nginx/...
ну или дать мне доступ до сервера, это уже в скайп shambler81

Так же очень важно указать версию nginx посколькуо стабильный nginx ну оооочень старый
Писались конфиги под него.

Что же касается
Отдельно нужно будет сделать location для ваших IP иначе доступ до сайтов по IP будет возможен толко через :82 посколкьу root будет содержать /var/www/11.11.11.1/web
то давайте вначале разберемся с сервером если он у вас полностью работает и у вас проблема ТОЛЬКО с местом когда вы сайту выдаете не * а IP
то тут вы сами подумайте документ рут будет с айпи такой папки попросту нет.
соотсетственно вам нужено буде сделать отдельный сервер для этого сайта что то подобное, фактически впихнув в низ конфига.

тут весь конфиг {

Код: Выделить всё

###########################################################
server {
  server_name http://111.111.111.111;

                                        access_log  /var/log/ispconfig/httpd/111.111.111.111/access.log;
                                        location / {
                                        index index.php index.html index.htm;
                                        root /var/www/АВОТ ТУТ_РЕАЛЬНЫЙ _ПУТЬ_ДО_ПАПКИ/web/;
                                        proxy_pass http://111.111.111.111:82;
                                        proxy_set_header X-Real-IP  $remote_addr;
                                        proxy_set_header Host $host;
                                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                        }

                        location ~* ^.+\.(htm|html)$ {
                        root /var/www/111.111.111.111/web;
                        try_files $uri /index.php;
                        access_log off;
                        expires 30d;

                        }
                        }
#####################################################
тут он кончается }


Или еще проще сделайте банальный алиас даннного сайта на папку /var/www/111.111.111.111
в таком случае nginx найдет файлы и по этому урлу.

Re: Скрипт ISPConfig Installer: автоматическая установка ISPConfig 3 [Отзывы, вопросы и пожелания]

Добавлено: 15 апр 2019, 23:53
yuran25
У кого то получилось сделать нормальную связку apache + nginx на ispconfig3. Я устанавливал его скриптом отсюда Для просмотра ссылок Вы должны быть авторизованы на форуме.
Сам ispconfig нормально установился и работает. Как добавить nginx и сконфигурировать их c apache и со всей панелью.