====== Apache Related Quick Help ====== * [[ mod_evasive | DDOS Prevention module]] * [[ Error Codes | HTTP Error Codes ]] * [[ mod_proxy_ajp | Jboss Load Balancing ]] ==== Compile apache from source ==== Good known required configuration ./configure --prefix=/srv/www --enable-access --enable-autoindex --enable-env --enable-info --enable-mime --enable-proxy --enable-status --enable-usertrack --enable-actions --enable-imap --enable-log_agent --enable-rewrite --enable-alias --enable-auth --enable-cgi --enable-dir --enable-include --enable-log_config --enable-mime_magic --enable-negotiation --enable-setenvif --enable-userdir --enable-define --enable-log_forensic --enable-ssl --enable-so --enable-dav ==== Dynamic DocumentRoot for Sub-Domains with RewriteEngine/RewriteCond/RewriteRule ==== ServerAlias www.yourdomain.com ServerName www.yourdomain.com RewriteEngine on RewriteCond %{HTTP_HOST} ^yourdomain.com RewriteRule ^(.*)$ /www/$1 [L] RewriteCond %{HTTP_HOST} ^www.* RewriteRule ^(.*)$ /www/$1 [L] RewriteCond %{HTTP_HOST} ^(.*)\.yourdomain\.com RewriteRule ^(.*)$ /%1/$1 [L] ==== Broken Image rewrite ==== RewriteCond %{REQUEST_FILENAME} !-f RewriteRule \.(gif|jpg|png)$ http://www.xyz.com/images/broken_image.jpg [R=301,L] ==== mod_auth_mysql installation ==== /srv/www/apache/bin/apxs -c -L/usr/local/lib/mysql -I/usr/local/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c Following Error is showing up when you install it with \\ mod_auth_mysql.c:591: error: syntax error before “mysql_auth_config_rec” http://sourceforge.net/tracker/index.php?func=detail&aid=1437139&group_id=60218&atid=493464 ==== phpinfo() Based on Location ==== Alias /php-info /usr/local/apache/libexec/info.php AuthUserFile /usr/local/apache/libexec/info.pw AuthGroupFile /dev/null AuthType Basic AuthName "PHP Info" require valid-user ==== Location Based Password ==== AuthUserFile /usr/local/www/statspass AuthName "Stats Admin" AuthType Basic Require valid-user ==== Disable mod_security for specific folder using .htaccess ==== SecFilterEngine Off SecFilterScanPOST Off ==== How to run php from cgi-bin folder ==== Action php-script /cgi-bin/php AddHandler php-script .php ==== How to Disable Hotlinking using .htaccess ==== RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?xyz\.com [NC] ## allow RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?pqr\.com [NC] ## allow RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?abc\.org [NC] ## allow RewriteRule \.(gif|jpe?g|png|gif|bmp|jpe|mov|mpg|avi|mpeg|jpg)$ http://www.mnr.com [NC,L] ## Forward == To enable some domain to hotlink on above list == if you define above .htaccess to all your domain at global position.\\ you might need to exclude some domain to allow hotlinking to it use following line after second line.\\ RewriteCond %{HTTP_HOST} !^www\.nmn\.com$ [NC] ==== Block IP using .htaccess ==== order allow,deny allow from all deny from .microsoft.com deny from .evil-hackers.org deny from 24.112.106.235 deny from morphine.wiretap.net ==== How to test mod_perl === #!/usr/local/bin/perl $www = $ENV{'SERVER_PORT'} ne ""; eval "use Compress::Zlib"; $hasCompress = $@ ? 0 : 1; eval "use LWP"; $hasLWP = $@ ? 0 : 1; eval "use LWP::Simple"; $hasLWPsimple = $@ ? 0 : 1; if ($hasLWPsimple) { eval "use LWP::UserAgent"; my $ua = LWP::UserAgent->new(timeout => 30); $u = "http://www.c3scripts.com/test/test.txt"; $resp = $ua->request(HTTP::Request->new('GET', $u)); $okLWP = $resp->content =~ /test\.pl/i; } eval "use CGI::Carp qw(fatalsToBrowser)"; $hasCGI = $@ ? 0 : 1; $w = 16; $f = "%" . $w . "s : %s\n"; $f2 = " " x $w . " & %s\n"; print "Content-type: text/html\n\n
" if ($www);
printf $f, "test.pl", "v6.01.18";
printf $f, "Perl", "v$]";  
printf $f, "CGI::Carp", ($hasCGI? "" : "not ") . "installed";
printf $f, "Compress::Zlib", ($hasCompress? "" : "not ") . "installed";
printf $f, "LWP", ($hasLWP? "v$LWP::VERSION " : "not ") . "installed";
printf $f, "LWP::Simple", ($hasLWPsimple? "" : "not ") . "installed";
printf $f, "LWP::Simple", "rx " . ($okLWP? "" : "not ") . "ok" if ($hasLWPsimple);
printf $f, "\@INC", $INC[0]; foreach $x (1..$#INC) { printf $f2, $INC[$x];}
foreach $x (sort split(",",
  "DOCUMENT_ROOT,SCRIPT_FILENAME,PATH_INFO,PATH_TRANSLATED,".
  "REQUEST_FILENAME,HTTP_HOST,SERVER_SOFTWARE"))
    { printf $f, $x, $ENV{$x} }
print "
\n" if ($www); 1;
==== Setting Timezone using .htaccess ==== you can setup timezone using setting environment using TZ. SetEnv TZ Europe/London ==== Setup Server admin email using .htaccess ==== To setup default notification email, you can also set based on directory. ServerSignature EMail SetEnv SERVER_ADMIN user@domainname.com ==== Block request based on User Agent ==== There is two way to accomplish this task. SetEnvIfNoCase User-Agent "^libwww-perl" bad_bot SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot SetEnvIfNoCase User-Agent "^Teleport" bad_bot SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot SetEnvIfNoCase User-Agent "^Mozilla/4\.0\ \(compatible\)$" bad_bot Order Allow,Deny Allow from all Deny from env=bad_bot OR RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^libwww-perl [OR] RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4\.0\ \(compatible\) [OR] RewriteRule ^.* - [F,L] ==== How to prevent asking for download files ==== This will not ask you to download files. AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .mov ==== Redirect Non-www to www domain ==== This is useful in may stats. RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] ==== Redirect www to Non-www ==== RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com RewriteRule (.*) http://www.domain.com/$1 [R=301,L] ==== Redirect if HTTP_HOST not match ==== This help you to prevent IP pointing and help gaining ranking. RewriteEngine On RewriteCond %{HTTP_HOST} !^(.*)\.domain\.com RewriteRule (.*) http://www.google.com/search?hl=en&site=domain.com&q=domain.com&btnG=Search [R=301,L] ==== flv streaming + mp4 streaming with lighttpd proxy ==== ProxyRequests Off ProxyPass /video http://127.0.0.1:81/ ProxyPassReverse / http://127.0.0.1:81/ In light httpd simply follow the configuration as usual. OR Check link [[lightttpd]] ==== Redirect you can use with apache / lighttpd to content ==== RewriteEngine On RewriteRule ^(.*)\.(mp3|mov|mp4)$ http://www.xyz.com:81/Videos/$1.$2 [NC] ==== Redirect mobile browser ==== This will help to redirect all mobile devices to specific page. RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (mobile|android|blackberry|brew|htc|j2me|lg|midp|mot|motorola|netfront|nokia|obigo|openweb|opera.mini|palm|psp|samsung|sanyo|sch|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windows.ce) [NC] RewriteRule ^(.*)$ http://ketan.lithiumfox.com/doku.php?do=search&id=htaccess [R=303,L] Why 303 : The response to the request can be found under another URI using a GET method. When received in response to a PUT,\\ it should be assumed that the server has received the data and the redirect should be issued with a separate GET message. ==== Disable Trace / track ==== Mostly trace / track is risk to apache server.\\ RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F]