Для раскидывания поддоменов по папкам можно использовать такую конструкцию
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} admin.domain.ru$ RewriteCond %{REQUEST_URI} !/admin/ RewriteRule ^(.*)$ /admin/$1 [L] RewriteRule admin - [L]
Tags: apache, rewrite, директории, папки, поддомены
Чтобы открыть сайт для локалки но запаролить для внешки я использую такую конструкцию
AuthType Basic AuthName "Test hosting" AuthUserFile /web/admin/www/.htpass Require valid-user Order deny,allow Deny From All Allow From 192.168.0. Satisfy any
Tags: apache, htaccess, ip, satisfy, доступ, пароль
RewriteCond %{HTTP_HOST} ^(www\.)?(example.com)$ [NC]
RewriteCond %{REMOTE_ADDR} !(10\.10\.10\.10) [NC]
RewriteRule ^(^[^.]*)$ /index1.html [L]Работал работал хостинг рос и ширился, и в один прекрасный день перестали работать все операции связанные с вызовом gethostaddr.
Один и тот же скрипт запущенный в режиме cli выполняется, а как модуль
apache не хочет определять имена хостов.
Помогает добавление в /etc/hosts необходимых url-ов.
Включил debug режим error лога, а там
host: isc_socket_create: not enough free resources
Это говорит о том что апач превысил лимит открытых файлов
lsof | grep -c httpd 12790
а при этом в
sysctl -a | grep kern.maxfiles kern.maxfiles: 12328 kern.maxfilesperproc: 11095
Вот собственно и проблема, решить которую можно двумя способами
1. Уменьшить количество открытых файлов
2. Увеличить лимиты
Я уменьшил количество, путем удаления лишних логов (было по 4 на хост стало по 2)
тем самым отсрочив немного эту проблему.
lsof | grep -c httpd 7244
Tags: apache, gethostaddr, gethostbyip, gethostbyname, php
SetOutputFilter DEFLATE
# исключаем Netscape 4.x, Netscape 4.06-4.08,
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE маскирующийся под Netscape включаем
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# для прокси отключаем сжатие
Header append Vary User-Agent env=!dont-vary
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico|swf|exe|t?gz|zip|bz2|sit|rar|7z|pdf)$ \
no-gzip dont-vary
</IfModule>
mkdir /etc/mail/certs/ openssl req -new -newkey rsa:1024 -nodes -keyout /etc/mail/certs/server.key -x509 -days 5000 -subj "/C=XX/CN=имя-хоста/emailAddress=root@имя-хоста" -out /etc/mail/certs/server.crt cp /etc/mail/certs/server.crt /etc/mail/certs/cacert.pem chmod 400 /etc/mail/certs/server.key
Далее правим /usr/local/etc/apache22/extra/httpd-ssl.conf
ServerName www.example.com:443 ServerAdmin info@example.com SSLCertificateFile /etc/mail/certs/server.crt SSLCertificateKeyFile /etc/mail/certs/server.key
cd /usr/ports/www/apache22
make WITH_SUEXEC_MODULES=yes SUEXEC_DOCROOT=/