## ## httpd.conf -- Apache HTTP server configuration file ## # This is the main server configuration file. See URL http://www.apache.org/ # fo: instructions. # Do NOT simply read the instructions in here without understanding # what they do, if you are unsure consult the online docs. You have been # warned. # Originally by Rob McCool # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Please read the file README.DSO in the Apache 1.3 distribution for more # details about the DSO mechanism and run `httpd -l' for the list of already # built-in (statically linked and thus always available) modules in your httpd # binary. # # Example: # LoadModule foo_module libexec/mod_foo.so # # Documentation for modules is in "/home/httpd/manual/mod" in HTML format. # Extra Modules #LoadModule php_module modules/mod_php.so #LoadModule php3_module modules/libphp3.so #LoadModule perl_module /usr/lib/apache/libperl.so # Reconstruction of the complete module list from all available modules # (static and shared ones) to achieve correct module execution order. # [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO] #ClearModuleList # Extra Modules #AddModule mod_php.c #AddModule mod_php3.c #AddModule mod_perl.c # ServerType is either inetd, or standalone. #RewriteLogLevel 9 #RewriteLog rewrite_log ServerType standalone # If you are running from inetd, go to "ServerAdmin". # Port: The port the standalone listens to. For ports < 1023, you will # need httpd to be run as root initially. Port 80 # HostnameLookups: Log the names of clients or just their IP numbers # e.g. www.apache.org (on) or 204.62.129.132 (off) # The default is off because it'd be overall better for the net if people # had to knowingly turn this feature on. HostnameLookups off # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # User/Group: The name (or #number) of the user/group to run httpd as. # On SCO (ODT 3) use User nouser and Group nogroup # On HPUX you may not be able to use shared memory as nobody, and the # suggested workaround is to create a user www and use that user. # NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET) # when the value of (unsigned)Group is above 60000; # don't use Group nobody on these systems! User httpd Group httpd #FIXME? # ServerAdmin: Your address, where problems with the server should be # e-mailed. ServerAdmin admin@traderwebs.co.uk # ServerRoot: The directory the server's config, error, and log files # are kept in. # NOTE! If you intend to place this on a NFS (or otherwise network) # mounted filesystem then please read the LockFile documentation, # you will save yourself a lot of trouble. ServerRoot /etc/httpd # BindAddress: You can support virtual hosts with this option. This option # is used to tell the server which IP address to listen to. It can either # contain "*", an IP address, or a fully qualified Internet domain name. # See also the VirtualHost directive. #BindAddress * # ErrorLog: The location of the error log file. If this does not start # with /, ServerRoot is prepended to it. ErrorLog /var/log/httpd/error # LogLevel: Control the number of messages logged to the error_log. # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn # The following directives define some format nicknames for use with # a CustomLog directive (see below). LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%v %h %{CLIENT}e %{PREVIEW}e %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" client #LogFormat "%v %h %{CLIENT}e %{%s}t %U %>s %B %{PREVIEW}e %q" client #LogFormat "%h %l %u %t \"%r\" %>s %b" common #LogFormat "%{Referer}i -> %U" referer #LogFormat "%{User-agent}i" agent # The location of the access logfile (Common Logfile Format). # If this does not start with /, ServerRoot is prepended to it. CustomLog /var/log/httpd/access combined CustomLog /var/log/httpd/client client env=LOGTHIS # If you would like to have an agent and referer logfile uncomment the # following directives. #CustomLog logs/referer_log referer #CustomLog logs/agent_log agent # If you prefer a single logfile with access, agent and referer information # (Combined Logfile Format) you can use the following directive. #CustomLog logs/access_log combined # PidFile: The file the server should log its pid to PidFile /var/run/httpd.pid # ScoreBoardFile: File used to store internal server process information. # Not all architectures require this. But if yours does (you'll know because # this file is created when you run Apache) then you *must* ensure that # no two invocations of Apache share the same scoreboard file. ScoreBoardFile /var/log/httpd/httpd_status # The LockFile directive sets the path to the lockfile used when Apache # is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or # USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at # its default value. The main reason for changing it is if the logs # directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL # DISK. The PID of the main server process is automatically appended to # the filename. # #LockFile /var/lock/httpd.lock # ServerName allows you to set a host name which is sent back to clients for # your server if it's different than the one the program would get (i.e. use # "www" instead of the host's real name). # # Note: You cannot just invent host names and hope they work. The name you # define here must be a valid DNS name for your host. If you don't understand # this, ask your network administrator. ServerName www.traderwebs.co.uk # UseCanonicalName: (new for 1.3) With this setting turned on, whenever # Apache needs to construct a self-referencing URL (a url that refers back # to the server the response is coming from) it will use ServerName and # Port to form a "canonical" name. With this setting off, Apache will # use the hostname:port that the client supplied, when possible. This # also affects SERVER_NAME and SERVER_PORT in CGIs. UseCanonicalName off # CacheNegotiatedDocs: By default, Apache sends Pragma: no-cache with each # document that was negotiated on the basis of content. This asks proxy # servers not to cache the document. Uncommenting the following line disables # this behavior, and proxies will be allowed to cache the documents. #CacheNegotiatedDocs # Timeout: The number of seconds before receives and sends time out Timeout 300 # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. KeepAlive Off # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We reccomend you leave this number high, for maximum performance. MaxKeepAliveRequests 100 # KeepAliveTimeout: Number of seconds to wait for the next request KeepAliveTimeout 15 # Server-pool size regulation. Rather than making you guess how many # server processes you need, Apache dynamically adapts to the load it # sees --- that is, it tries to maintain enough server processes to # handle the current load, plus a few spare servers to handle transient # load spikes (e.g., multiple simultaneous requests from a single # Netscape browser). # It does this by periodically checking how many servers are waiting # for a request. If there are fewer than MinSpareServers, it creates # a new spare. If there are more than MaxSpareServers, some of the # spares die off. These values are probably OK for most sites --- MinSpareServers 5 MaxSpareServers 10 # Number of servers to start --- should be a reasonable ballpark figure. StartServers 5 # Limit on total number of servers running, i.e., limit on the number # of clients who can simultaneously connect --- if this limit is ever # reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW. # It is intended mainly as a brake to keep a runaway server from taking # Unix with it as it spirals down... MaxClients 150 # MaxRequestsPerChild: the number of requests each child process is # allowed to process before the child dies. # The child will exit so as to avoid problems after prolonged use when # Apache (and maybe the libraries it uses) leak. On most systems, this # isn't really needed, but a few (such as Solaris) do have notable leaks # in the libraries. MaxRequestsPerChild 30 # Proxy Server directives. Uncomment the following line to # enable the proxy server: #ProxyRequests On # To enable the cache as well, edit and uncomment the following lines: #CacheRoot /var/cache/httpd #CacheSize 5 #CacheGcInterval 4 #CacheMaxExpire 24 #CacheLastModifiedFactor 0.1 #CacheDefaultExpire 1 #NoCache a_domain.com another_domain.edu joes.garage_sale.com # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, in addition to the default. See also the VirtualHost command Listen 80 Listen 443 # global ssl setup SSLSessionCache dbm:/var/log/httpd/ssl_scache SSLSessionCacheTimeout 300 SSLMutex file:/var/log/httpd/ssl_mutex SSLRandomSeed startup file:/dev/urandom 512 SSLRandomSeed connect builtin # uncomment this for debugging # #PerlModule Apache::Status # #SetHandler perl-script #PerlHandler Apache::Status # PerlFreshRestart On # VirtualHost: Allows the daemon to respond to requests for more than one # server address, if your server machine is configured to accept IP packets # for multiple addresses. This can be accomplished with the ifconfig # alias flag, or through kernel patches like VIF. # Any httpd.conf or srm.conf directive may go into a VirtualHost command. # See also the BindAddress entry. # #ServerAdmin webmaster@host.some_domain.com #DocumentRoot /www/docs/host.some_domain.com #ServerName host.some_domain.com #ErrorLog logs/host.some_domain.com-error_log #TransferLog logs/host.some_domain.com-access_log # Header set Content-Language en UserDir web NameVirtualHost 213.239.56.162 ServerName www.traderwebs.co.uk ServerAdmin admin DocumentRoot /home/sites/site1/web ServerAlias traderwebs.co.uk ServerAlias bell RewriteEngine on RewriteCond %{HTTP_HOST} !^213.239.56.162(:80)?$ RewriteCond %{HTTP_HOST} !^www.traderwebs.co.uk(:80)?$ RewriteCond %{HTTP_HOST} !^bell(:80)?$ RewriteRule ^/(.*) http://www.traderwebs.co.uk/$1 [L,R] RewriteOptions inherit #AliasMatch ^/users/([^/]+)(/(.*))? /home/sites/site1/users/$1/web/$3 # # www.traderwebs.co.uk/competition ScriptAlias /competition /home/httpd/cgi-bin/comp.cgi # worldpay RewriteRule ^/wcc/(.*)$ https://select.worldpay.com/wcc/$1 [L,R] # site home dirs AliasMatch ^/~([^/]+)(/(.*))? /home/sites/$1/web/$3 # site root: /~user/ #Rewrite RewriteRule ^/~([^/]+)/$ /usr/local/traderwebs/web_store/web_store.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1,E=LOGTHIS:1] #works #RewriteRule ^/~([^/]+)/([^.]+).html$ /usr/local/traderwebs/web_store/web_store.cgi?page=$2 [T=application/x-httpd-cgi,L,E=CLIENT:$1,QSA,E=LOGTHIS:1] #RewriteRule ^/~([^/]+)/([^./]+).html$ /home/sites/$1/store/html/$2.html [L,E=LOGTHIS:1] # preview root [callbacks :(] RewriteRule ^/~([^/]+)/preview([^/]*)/$ /usr/local/traderwebs/web_store/web_store.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1,E=PREVIEW:1] # /~user/wizard/imgpopup - workaround for MSIE's "security" RewriteRule ^/~([^/]+)/wizard/imgpopup$ /usr/local/traderwebs/web_store/imgpopup.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1] # /~user/wizard/ RewriteRule ^/~([^/]+)/wizard/$ https://www.traderwebs.co.uk/~$1/wizard/ [L,R] SSLengine on SSLCertificateFile /etc/httpd/conf/ssl.crt/traderwebs.2004.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2004.key SSLCertificateChainFile /etc/httpd/conf/ssl.crt/entrust.crt ServerName www.traderwebs.co.uk ServerAdmin admin DocumentRoot /home/sites/site1/web ServerAlias traderwebs.co.uk RewriteEngine on RewriteCond %{HTTP_HOST} !^www.traderwebs.co.uk(:443)?$ RewriteRule ^/(.*) https://www.traderwebs.co.uk/$1 [L,R] RewriteOptions inherit #SetEnvIf User-Agent ".*MSIE.*" \ # nokeepalive \ # ssl-unclean-shutdown \ # downgrade-1.0 force-response-1.0 #AliasMatch ^/users/([^/]+)(/(.*))? /home/sites/site1/users/$1/web/$3 # site home dirs AliasMatch ^/~([^/]+)(/(.*))? /home/sites/$1/web/$3 # statistics RewriteRule ^/~([^/]+)/stats/(.*)$ /home/sites/$1/stats/$2 [L] #worldpay RewriteRule ^/wcc/(.*)$ https://select.worldpay.com/wcc/$1 [L,R] # site root RewriteRule ^/~([^/]+)/$ /usr/local/traderwebs/web_store/web_store.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1,E=LOGTHIS:1] #RewriteRule ^/~([^/]+)/([^./]+).html$ /usr/local/traderwebs/web_store/web_store.cgi?page=$2 [T=application/x-httpd-cgi,L,E=CLIENT:$1,QSA,E=LOGTHIS:1] # preview root RewriteRule ^/~([^/]+)/preview([^/]*)/$ /usr/local/traderwebs/web_store/web_store.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1,E=PREVIEW:1] #works #RewriteRule ^/~([^/]+)/preview[^/]*/([^./]+).html$ /usr/local/traderwebs/web_store/web_store.cgi?page=$2 [T=application/x-httpd-cgi,L,E=CLIENT:$1,E=PREVIEW:1,QSA] #for testing #RewriteRule ^/~([^/]+)/preview([^/]*)/([^./]+).html$ /home/sites/$1/store/preview$2/html/$3.html [L,E=LOGTHIS:1] # passwd RewriteRule ^/~([^/]+)/wizard/passwd$ /usr/local/traderwebs/web_store/passwd.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1] # wizard RewriteRule ^/~([^/]+)/wizard/$ /usr/local/traderwebs/web_store/wizard.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1] #RewriteRule ^/~([^/]+)/order/(\w+)$ /usr/local/traderwebs/web_store/order/order.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$1,E=ORDER:$2] #smart thumbnail caching # imageonly images RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s RewriteRule ^/thumbs/(([A-Za-z0-9]+)/imageonly/)(([A-Za-z0-9]+)(-layout_image=[A-Za-z0-9]*).jpeg) /usr/local/traderwebs/web_store/image.cgi [T=application/x-httpd-cgi,L,E=MASK:mask-$2$5.mask,E=OVER:over2-$2$5.overlay,E=TRANSP:$2--$4-layout_image=transparent.imageonly.ppm,E=OUT:$3,E=DIR:$1] # real thumbs with images (1.6 million) RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s RewriteRule ^/thumbs/(([A-Za-z0-9]+)/([A-Za-z0-9]+)/)(([A-Za-z0-9]+)(-layout_image=[A-Za-z0-9]*).jpeg) /usr/local/traderwebs/web_store/image.cgi [T=application/x-httpd-cgi,L,E=MASK:mask3-$2-$3$6.mask,E=OVER:over3-$2-$3$6.overlay,E=TRANSP:$2-$3-$5-layout_image=transparent.ppm,E=OUT:$4,E=DIR:$1] # real thumbs with options - including styletemp (degenerate; no overlay) RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s RewriteRule ^/thumbs/(([A-Za-z0-9]+)/([A-Za-z0-9]*)/)(([A-Za-z0-9]*)([-=A-Za-z0-9_]*).jpeg) /usr/local/traderwebs/web_store/degen-image.cgi [T=application/x-httpd-cgi,L,E=FILE:$2-$3-$5$6.jpeg,E=OUT:$4,E=DIR:$1] # colour-cycled degenerate real thumbs (no overlay) RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s RewriteRule ^/thumbs/(([A-Za-z0-9]+)/([A-Za-z0-9]*)/)((([0-9]+)rotate\.)([A-Za-z0-9]*)([-=A-Za-z0-9_]*).jpeg) /usr/local/traderwebs/web_store/cycle-image.cgi [T=application/x-httpd-cgi,L,E=FILE:$2-$3-$5$7.jpeg,E=OUT:$4,E=DIR:$1,E=ROTATE:$6] #RewriteEngine on ##smart thumbnail caching # ## imageonly images #RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s #RewriteRule ^/thumbs/(([A-Za-z0-9]+)/imageonly/)(([A-Za-z0-9]+)(-layout_image=[A-Za-z0-9]*).jpeg) /usr/local/traderwebs/web_store/image.cgi [T=application/x-httpd-cgi,L,E=MASK:mask-$2$5.mask,E=OVER:over2-$2$5.overlay,E=TRANSP:$2--$4-layout_image=transparent.imageonly.ppm,E=OUT:$3,E=DIR:$1] # ## real thumbs with images (1.6 million) #RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s #RewriteRule ^/thumbs/(([A-Za-z0-9]+)/([A-Za-z0-9]+)/)(([A-Za-z0-9]+)(-layout_image=[A-Za-z0-9]*).jpeg) /usr/local/traderwebs/web_store/image.cgi [T=application/x-httpd-cgi,L,E=MASK:mask3-$2-$3$6.mask,E=OVER:over3-$2-$3$6.overlay,E=TRANSP:$2-$3-$5-layout_image=transparent.ppm,E=OUT:$4,E=DIR:$1] # ## real thumbs with options - including styletemp (degenerate; no overlay) #RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-s #RewriteRule ^/thumbs/(([A-Za-z0-9]+)/([A-Za-z0-9]+)/)(([A-Za-z0-9]+)([-=A-Za-z0-9_]*).jpeg) /usr/local/traderwebs/web_store/degen-image.cgi [T=application/x-httpd-cgi,L,E=FILE:$2-$3-$5$6.jpeg,E=OUT:$4,E=DIR:$1] use Apache::PerlSections(); #require "/usr/local/traderwebs/web_store/userdb.pl"; ######## FIXME! ######### my %userdb; use GDBM_File; defined(tie(%userdb, 'GDBM_File', "/etc/traderwebs.db", &GDBM_READER, 0644)) || die "Failed to open database"; foreach my $user (keys %userdb) { # this is only for clients with registered domain names my $dom=$userdb{$user}; print STDERR "$user: $dom\n"; if ($dom) { $PerlConfig.=< ServerName www.$dom ServerAdmin admin\@traderwebs.co.uk DocumentRoot /home/sites/$user/web ServerAlias $dom RewriteEngine on RewriteCond %{HTTP_HOST} !^www.$dom(:80)?\$ RewriteRule ^/(.*) http://www.$dom/\$1 [L,R] RewriteOptions inherit RewriteRule ^/\$ /usr/local/traderwebs/web_store/web_store.cgi [T=application/x-httpd-cgi,L,E=CLIENT:$user,E=LOGTHIS:1] #RewriteRule ^/([^./]+).html\$ /usr/local/traderwebs/web_store/web_store.cgi?page=\$1 [T=application/x-httpd-cgi,L,E=CLIENT:$user,QSA,E=LOGTHIS:1] EOF } } #finaluserdb(); untie %userdb; #foreach my $client (split ' ',((getgrnam 'client')[3])) { # this is for all clients # $PerlConfig.=< #Require user $client #AuthName Traderwebs #AuthType Basic # #EOF #} # print STDERR Apache::PerlSections->dump(); Header set Cache-Control must-revalidate Header set Pragma no-cache ExpiresDefault now ExpiresActive on Header set Cache-Control must-revalidate Header set Pragma no-cache ExpiresDefault now ExpiresActive on Header set Cache-Control must-revalidate Header set Pragma no-cache ExpiresDefault now ExpiresActive on Header set Cache-Control must-revalidate Header set Pragma no-cache ExpiresDefault now ExpiresActive on # for local testing only! Header set Cache-Control no-cache Header set Pragma no-cache ExpiresDefault now ExpiresActive on Header unset Cache-Control Header unset Pragma ExpiresActive off # #Require group site-adm #AuthName Traderwebs #AuthType Basic # Options +ExecCGI #SetHandler Apache::Registry # #Require group home #AuthName Traderwebs #AuthType Basic #