User Tools

Site Tools


apache

This is an old revision of the document!


Apache Related Quick Help

Compile apache from source

Good known required configuration

| apache 2.x
./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

<VirtualHost *>
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]
</VirtualHost>

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

phpinfo() Based on Location

Alias /php-info /usr/local/apache/libexec/info.php
<Location /php-info>
   AuthUserFile /usr/local/apache/libexec/info.pw
    AuthGroupFile /dev/null
    AuthType Basic
    AuthName "PHP Info"
    require valid-user
</Location>

Location Based Password

<Location /stats/>
AuthUserFile /usr/local/www/statspass
AuthName "Stats Admin"
AuthType Basic
Require valid-user
</Location>

Disable mod_security for specific folder using .htaccess

| .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

| .htaccess
RewriteEngine    on
RewriteCond    %{HTTP_REFERER} !^$
RewriteCond    %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?xyz\.com [NC]   ## Do not allow
RewriteCond    %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?pqr\.com [NC]     ## Do not allow
RewriteCond    %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?abc\.org [NC]      ## Do not allow
RewriteRule    \.(gif|jpe?g|png|gif|bmp|jpe|mov|mpg|avi|mpeg|jpg)$ http://www.mnr.com [NC,L]   ## Allow

Block IP using .htaccess

| .htaccess
<Limit GET POST>
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
</Limit>

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 = "<b>%" . $w . "s</b> : %s\n"; $f2 = " " x $w . " & %s\n";
print "Content-type: text/html\n\n<html><body><pre>" 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 "</pre></body></html>\n" if ($www);
1;

Setting Timezone using .htaccess

you can setup timezone using setting environment using TZ.

| .htaccess
SetEnv TZ Europe/London

Setup Server admin email using .htaccess

To setup default notification email, you can also set based on directory.

| .htaccess
ServerSignature EMail
SetEnv SERVER_ADMIN user@domainname.com

Block request based on User Agent

There is two way to accomplish this task.

| .htaccess
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
 
Order Allow,Deny
Allow from all
Deny from env=bad_bot

OR

| .htaccess
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] 
RewriteRule ^.* - [F,L]

How to prevent asking for download files

This will not ask you to download files.

| .htaccess
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.

| .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Redirect www to Non-www

| .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

flv streaming + mp4 streaming with lighttpd proxy

| httpd.conf
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 Internal Link

apache.1258083364.txt.gz · Last modified: 2020/08/10 02:28 (external edit)