Page 1 of 1

Несколько вопросов

Posted: Tue May 31, 2016 8:43 am
by mdok
Здравствуйте!
Во первых, хочу поблагодарить за продукт, видно что сделано c душой!/(?) читай ниже, почему засомневался
Есть несколько вопросов, которые не дают покоя моему перфекционизму, растолкуйте пожалуйста :)


1. Как ребилднуть файлы /etc/nginx/conf.d/92.18.21.13.conf и другие с адресами, шаблон нашел где лежит - /usr/local/vesta/data/templates/web/nginx/proxy_ip.tpl, команды v-rebuild- разные перепробовал, не перебилдиваются гады.
Или удалять айпи и добавлять все заново? А в том айпи первый руками менять /etc/nginx/conf.d/FIRST_IP.conf ? Не кошерно получается :)


2. Чистая установка CentOS 7.2, Vesta Release 0.9.8-15.
Apache+nginx, шаблоны hosting первого и второго.
Добавил пользователей и пару доменов, как то странно показываются ошибки 404 и тд, показываются дефолтные/сырые страницы ошибок, а не те что указаны в настройках (/home/user/web/site.com/document_errors/). Перечитал конфиг nginx'а, вроде всё правильно указано
в /etc/nginx/nginx.conf

# Error pages
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 502 503 504 /error/50x.html;

в конфиге виртуалхоста

location /error/ {
alias /home/user/web/site.com/document_errors/;
}

Но показываются дефолтные/сырые страницы ошибок.
При запросе несуществующих файлов, понятное дело должно отдаваться 404
Запрашиваю несуществующий 1.php – говорит 404, обычной страницей

Code: Select all

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /1.php was not found on this server.</p>
</body></html>
Запрашиваю несуществующий 1.jpg – говорит 404, обычной страницей

Code: Select all

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /1.jpg was not found on this server.</p>
</body></html>
А если запросить .htaccess, то уже отдает страницу ошибки правильную/красивую вестовскую

Code: Select all

404
Page Not Found
The page you were trying to reach does not exist. Or, maybe it has moved. You can start again from home or go back to the previous page. 
Поскольку работает настройка в виртуалхосте
location ~ /\.ht {return 404;}

В общем, вопрос в чём, почему на все случаи 404 ошибки не показывается одинаковая страница ошибки, ведь всё прописано, это глюк какой-то? Или я чего-то не понимаю?. Как сделать что-бы на все запросы (статика/динамика) несуществующих файлов отдавало нормальные 404 странички которые лежат в /home/user/web/site.com/document_errors/, так же задумано?


3. Перечитал конфиги Apache вдоль и поперёк, правильно ли я понимаю что любой IP и домен должен отдаваться просто на порту 8080, и это будет отдача наружу прям с Apache без прокси-nginx ?

<VirtualHost 92.18.21.13:8080>
…..

Гипотетически я беру ввожу http://domain.com:8080 и отдаётся сайт без проксирования?
Гипотетически я беру ввожу http://92.18.21.13:8080 и отдаётся первый по спику сайт на этом ip без проксирования?

По логике вещей должно быть так, но оно не работает так, на 8080 в мир вообще пусто, я не могу понять почему так, я как бы и не хочу чтобы по 8080 показылось в мир без проксирования, но судя из настроек оно должно быть так, а оно НЕ так. Фаервол отключил. Объясните пожалуйста, должно это быть так или нет? Если да то почему не работает, либо если нет, то почему, если настройки открывают 8080 в мир?

Благодарю за ответы.

Re: Несколько вопросов

Posted: Wed Jun 01, 2016 12:07 am
by mdok
skurudo, imperio ребята вы где? :)

Re: Несколько вопросов

Posted: Wed Jun 01, 2016 7:03 am
by mdok
Ещё вопрос назрел

4. Опять же свежий инсталл всего, панель+ОС, CentOS 7.2, Vesta Release 0.9.8-15. nginx+apache
Началось с того что я попрбовал закрыть доступ к phpmyadmin по айпи, внёс изменения в /etc/httpd/conf.d/phpMyAdmin.conf

<Directory /usr/share/phpMyAdmin/>
Order Deny,Allow
Deny from all
Allow from 192.168.0.55
</Directory>

Где 192.168.0.55 мой айпи

Не работает, начал копать, вглянул в логи а там:

[Wed Jun 01 02:19:15.025429 2016] [access_compat:error] [pid 5506] [client 192.168.0.22:42302] AH01797: client denied by server configuration: /usr/share/phpMyAdmin/

Удивлению моему не было предела, client 192.168.0.22, у меня айпи 192.168.0.55, а 192.168.0.22 это ip на котором стоит панель, то бишь первый айпи на сервере.
Идём дальше смотрим в phpinfo на этом домене

Image

SERVER_ADDR 192.168.0.30 - правильно
REMOTE_ADDR 192.168.0.22 - НЕ правильно, это ip первый айпи сервера
HTTP_X_REAL_IP 192.168.0.55 - мой клиенский ip
HTTP_X_FORWARDED_FOR 192.168.0.55 - мой клиенский ip

Я думал что mod_remoteip для этого стоит, и REMOTE_ADDR должен менятся на клиентский айпи получаемый от nginx ?

В общем странное поведение... искал какието конфиги для mod_remoteip ничего не нашел.

Т.е. из коробки нормально скрипты работать не будут, потому что ПО передаёт некорректный клиентский ip, и все заходы и действия будут от одного ip. Чешу репу сижу, то ли это глюк, то ли так задумано...

Что я делаю не так?

Re: Несколько вопросов

Posted: Wed Jun 01, 2016 10:35 pm
by mdok
Смотрю у вас на форуме так и работает как описано в проблеме №4

Image

т.е. ваш апач видит меня как 188.226.163.96, а это на самом деле айпи вашего сервера где этот форум.

Вот именно такая настройка как описана в проблеме №4 приводит к такому поведению...
Я считаю это баг.

mod_remoteip не настроен? или надо ставить mod_rpaf?

Re: Несколько вопросов

Posted: Thu Jun 02, 2016 1:59 am
by mdok
Вопрос №4 решен.

В общем, мне стало всё понятно, не настроен mod_remoteip, для корректной передачи ip клиента апачу надо ввести ip с которого коннектится фронтэнд т.е. nginx, в данном случае это первый ip сервера.

в /etc/httpd/conf/httpd.conf в секцию <IfModule remoteip_module> надо добавить

Code: Select all

RemoteIPInternalProxy 192.168.0.22
чтобы получилось

Code: Select all

<IfModule remoteip_module>
    RemoteIPHeader X-Real-IP
    RemoteIPInternalProxy 192.168.0.22
    LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%a %l %u %t \"%r\" %>s %b" common
</IfModule>
где 192.168.0.22 тот самый ip сервера

Я весьма удивлён почему это не делает сама панель? Никому не нужны реальные айпи клиентов/посетителей?, везде же будет фигурировать один ip, в тех же awstats/webalizer...

Re: Несколько вопросов

Posted: Thu Jun 02, 2016 4:26 am
by mdok
Вопрос №2 решен.

Напомню: чистая установка CentOS 7.2, Vesta Release 0.9.8-15.
Apache+nginx, шаблоны hosting.

Поскольку, как оказалось, всё так или иначе проксируется на apache, то, то что в nginx прописаны ошибки глобально и алиасы в вирталхосте это до одного места... кроме ошибки 502 когда nginx сам ответит что apache упал/не_отвечает, и ответит вестовской страницей. Все остальные ошибки будет обрабатывать apache. Так вот заботливые разработчики Vesta прописали в виртуалхосте apache

Code: Select all

Alias /error/ /home/user/web/site.com/document_errors/
за это спасибо :), но только apache не будет искать страницы ошибок по этому алиасу, просто потому что если адреса ошибок не указаны в конфиге он будет показывать захардкоженную страницу ошибки апача, как указано тут http://httpd.apache.org/docs/2.0/mod/co ... ordocument

Посему надо указать глобально в файле /etc/httpd/conf/httpd.conf

Code: Select all

ErrorDocument 403 "/error/403.html"
ErrorDocument 404 "/error/404.html"
ErrorDocument 500 "/error/50x.html"
и сразу всё начинает работать как положено, и nginx и apache в случае ошибок у того или у друого покажут правильную страницу ошибки на домене.

В связи с этим и предыдущим постом, хочется спросить, ребят, вы вообще не тестируете что-ли? Там недонастроено, тут недонастроено...

Re: Несколько вопросов

Posted: Thu Jun 02, 2016 4:45 am
by mdok
C вопроcом №3 тоже всё понятно.

Таки показывается в мир всё без проксирования на порту 8080

http://domain.com:8080 и отдаётся сайт без проксирования чистым apache.
http://92.18.21.13:8080 и отдаётся первый по спиcку сайт на этом ip без проксирования чистым apache.

Это плохо я щитаю, и тому есть много причин:

- это запросто могут наиндексить поисковые системы, что будет давать дубли сайтов на 80 и 8080, это плохо.
- конкуренты/боты/недоброжелатели могут завалить apache кучей запросов к статике и динамике, апач будет обрабатывать напрямую и будет жрать память и ресурсы как не в себя.

Незнаю, зачем вы вообще повешали бекэнд в мир на реальные ip, что мешало вешать его на 127.0.0.1, и в мир выпустить только nginx...

Re: Несколько вопросов

Posted: Fri Jun 03, 2016 1:22 pm
by imperio
Привет.
На форуме у нас глюк, после релиза поправим. Будет отображать реальные ip, а не серверный.
Исправляется через mod_remote

Ещё раз напишите все вопросы, которые у вас остались по порядку, а то запутались.