Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Проблема с виртуальными хостами в Апаче
цитата
14/08/09 в 15:03
 megreep
Версия Апача 2.2. Платформа CentOS 5.2

КОнфигурация следующая: два IP, основной httpd.conf, виртуальные хосты подгружаются в виде отдельных conf файлов из conf.d директории. Проблема:

при рестарте апач выдает:
Код:
[Fri Aug 14 13:57:36 2009] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
[Fri Aug 14 13:57:36 2009] [warn] _default_ VirtualHost overlap on port 80, the first has precedence


в httpd.conf в конце файла прописана директива NameVirtualHost *:80, каждый файл виртуального хоста начинается с VirtualHost *:80

подскажите, как убрать эти мессаги и чтобы нормально отображались виртуальные хосты? сейчас при открытии каждого хоста пишет 403 Forbidden
цитата
14/08/09 в 15:33
 -=NORTEL=-
Пропиши айпишники жестко:

vhosts.conf:
NameVirtualHost 127.0.0.1

И во всех вирт хостах:
<virtualhost 127.0.0.1:80>
[...]
</virtualhost>

Тут пример локал хоста если ты используешь внешний айпи то пропиши его...
цитата
14/08/09 в 16:00
 megreep
vhosts.conf не используется, его нету. IP внешние жестко прописывал - пишет VirtualHost, вываливается:
Код:
virtualhost xxx.conf overlap with xxx.conf the first has precedence


У меня два IP внешних, и 6 виртуальных хостов нужно создать под разные сайты.
цитата
14/08/09 в 17:10
 Sha
В httpd.conf найди и закоментарь

<VirtualHost _default_>
blablabla
...
</VirtualHost>
цитата
14/08/09 в 17:14
 megreep
Sha: я что дурней паровоза? там все закоментировано
цитата
14/08/09 в 17:24
 Sha
Надо смотреть файлы конфигов.
У тя точно NameVirtualHost есть в конфиге?
цитата
14/08/09 в 17:33
 megreep
в hosts1.conf (где прописаны виртуальные хосты) написано первой строчкой - NameVirtualHost xxx.xxx.xxx.xxx:80
цитата
14/08/09 в 18:38
 Sha
То у тя звёздочка, то конкретные IP.

Если NameVirtualHost *:80, то
<VirtualHost *:80>
</VirtualHost>
<VirtualHost *:80>
</VirtualHost>

Проверь чтобы VirtualHost с IP нигде не затесался.
цитата
14/08/09 в 22:23
 megreep
с виртуальными хостами разобрался, теперь с 403 ошибкой проблема осталась:
есть три хоум директории, принадлежат трем разным юзерам из разных групп. проблемя бля в том что один из них нормально пашет, а другие выдают бля 403, и хоть кол на голове им чеши... Я уже понять не могу почему эта дряная 403 выползает.
цитата
15/08/09 в 12:39
 Sha
А апач от какого юзера запускается?
цитата
15/08/09 в 13:41
 Pentarh
На каждый виртуалхост желательно явно происывать диру DocumentRoot:
<Directory /home/username/domains/domain.com/htdocs>
Options FollowSymLinks Includes
Order Allow,Deny
Allow from all
AllowOverride All
</Directory>

Sample: http://pentarh.com/conf/linux/httpd-vhost-sample.conf
цитата
16/08/09 в 17:11
 megreep
апач запускается под свои юзером apache.

докментрут прописан. не, щас все виртуалхосты работают нормально, перенес со старого сервака блог на WP, странность какая-то с ним: открываешь главную - вместо index.php просто пустая страница. далее, открываешь site.com/wp-admin - админка начинает грузится, после этого начинает грузится главная нормально... честно говоря, я в растерянности, в логах усе хораша... может кто-то сталкивался?
цитата
16/08/09 в 20:29
 megreep
разобрался с пустой страницей в WordPress. со старого хоста в папке supercache остались файлы прокешированные, грохнул, кеш создался наново - все завелось.

Pentarh: вот ты в своем примере пишешь
Код:
php_admin_value upload_tmp_dir /home/username/domains/domain.com/tmp
php_admin_value session.save_path /home/username/domains/domain.com/tm

это для повышения секьюрити или как? без этого, я так понимаю, используется системная /tmp

есть у меня еще один хост, там не адалатовый проект, на друпале 5.2, после переноса начала писать в лог
Код:
Request exceeded the limit of 10 internal redirects due to probable configuration error.

по смыслу понятно, что где еть бесконечный loop в .htaccess, но вот где:

Код:
#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
</IfModule>

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On
  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600
  # Do not cache dynamically generated pages.
  ExpiresByType text/html A1
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id: .htaccess,v 1.81 2007/01/09 09:27:10 dries Exp $
цитата
17/08/09 в 09:58
 Pentarh
megreep писал:

Pentarh: вот ты в своем примере пишешь
Код:
php_admin_value upload_tmp_dir /home/username/domains/domain.com/tmp
php_admin_value session.save_path /home/username/domains/domain.com/tm

это для повышения секьюрити или как? без этого, я так понимаю, используется системная /tmp

Я обычно создаю песочницу домена так:
/path/domain.com
/path/domain.com/tmp
/path/domain.com/cgi-bin
/path/domain.com/htdocs

При этом open_basedir будет установлен в значение /path/domain.com, чтобы из скрипта не были доступны папки выше по дереву. Но в пхп есть такие вещи как upload_tmp_dir и session.save_path, которые обычно смотрят в /tmp и находятся выше по дереву. По этому я tmp переношу в песочницу домена.

Но это не дает защиты от шелл-инструкций вида system("cat /etc/passwd"). По этому, особенно для вордпресса, я прописываю вот что. Нужно отключить все шелл-вызовы для скриптов, исполняемых в апаче, но оставить их для CLI.

Не буду расписывать, т.к. я это уже расписал:
http://www.pentarh.com/wp/2008/10/13/wordpress-security/
http://www.pentarh.com/wp/2008/10/13/php-disable-functions/

После этого очень трудно будет через уязвимость в скриптах пролезть на сервер.

megreep писал:

есть у меня еще один хост, там не адалатовый проект, на друпале 5.2, после переноса начала писать в лог
Код:
Request exceeded the limit of 10 internal redirects due to probable configuration error.

по смыслу понятно, что где еть бесконечный loop в .htaccess, но вот где:


У тебя идет бесконечный внутренний редирект по RewriteRule. Скорей всего файл DOCUMENTROOT/index.php не существует, или лежит не в том месте. Или просто DocumentRoot прописан неправильно.
цитата
17/08/09 в 12:23
 megreep
спасибо за мини-лекцию smail54.gif почитал, оценил, разобрался, сделал у себя icon_biggrin.gif


Эта страница в полной версии