BUILD linemode | daemon | libraryto build a specific component. The default action is to build all three parts. BUILD is now also provided in a Bourne Shell version
DirAddHref
directive by Guenther Fisher.
ParentUserId
and
ParentGroupId
to set the uid and gid of the parent process right after binding
to port (some people complained that setuid()
is
slow on certain systems).
CacheLastModifiedFactor
is Off
then
CacheDefaultExpiry
is used instead of zero LM factor.
CacheRefreshInterval
for specifying the maximum
allowed time between consecutive up-to-date checks regardless of
expiry date. This is good for cases when it is vital to
always have the most up-to-date information even if expiry date
has been approximated to be too far off.
CacheDefaultExpiry
time no longer defaults to
non-zero for FTP or Gopher - it is always zero. I am thus
forcing proxy maintainers explicitly set these values if they
want to have FTP and Gopher cached.
Map
'pings onto a WAIS URL. Now it's possible to
run httpd
as a WAIS gateway as well as a WAIS proxy.
last-modified
fields
confusing the caching system.
Map
'ped by the
rule system as they came in; this will fix the problems with
servers that insist on having their URL's encoded in a special,
non-canonical form (e.g. dranet.dra.com
).
ProxyAccessLog
(new & broken in pre4).
CacheDefaultExpiry
,
CacheUnused
and CacheClean
are now
matched so that the first match is used, not the
last one, e.g.:
CacheDefaultExpiry */cgi-bin/* 0 CacheDefaultExpiry */htbin/* 0 CacheDefaultExpiry * 12 hoursnow works as expected.
WWW/All/XXX/Makefile.include
, and then doing the
normal BUILD in directory WWW
.
KeepExpired
directive; if turned On
the
proxy will not remove expired HTTP documents from the cache
during regular garbage collection but use up all the cache space,
thus increasing the effectiveness of if-modified-since [documents
that have expired are still usually not modified and become valid
again after a check from remote server].
ProxyAccessLog
for logging proxy accesses, i.e.
accesses that were not satisfied by the server in normal HTTP
server mode, but required an external connection from the proxy
server. [Broken, will be fixed in pre5.]
FTPDirInfo
Top | Bottom | Off
directive for
specifying the placement of FTP messages in FTP directory
listings.
DirShowHTMLTitles Off
can be used to disable HTML
TITLEs in the directory listings.
Linger On
enables it again.
pub/www/src
) gets moved when a link in that listing
is followed (e.g. to pub/www/src/.cache_dirindex
), a
correct entry is now written to .cache_info
file, so
that index no longer expires immediately.
MaxContentLengthBuffer
size was exceeded).
DNSLookup
directive for disabling the reverse DNS lookup to find out the
remote DNS hostname for cases when DNS seems to be a bottleneck.
Disabling this will naturally prevent the use of DNS name
templates in access control, and results in plain IP numbers in
the logfiles.
ServerType
StandAlone | Inetd
directive to select the server type.
If not set will default to StandAlone
if
Port
is
defined or -p
option used, otherwise to
Inetd
.
Pragma: no-cache
supported; by sending this header
to the proxy the client will force it to refresh its cache from
remote server. Pragma headers are also forwarded to the remote
server.
-restart
option - httpd
will find out
the actual server process number and send s HUP signal to it to
make it reload its configuration files; note that
httpd
must still have the same configuration file
command line parameters (-r
options) as the actual
server (so it finds out the ServerRoot and PidFile).
LogFormat
directive:
LogFormat old
Pass http://*/* /mirror/*/http/*Clearly the first asterisk should rather match only the hostname, and not the entire path except the filename.
Map /* /foo/bar/*does not match user-supported directories, but:
Map /~* /Webs/users/*does match them.
Protect
'ed.
.htm
and .htmls
to the
default set of known suffixes.
CacheSize 150 M CacheLimit_1 100 K CacheLimit_2 2 MThe numbers still have to be cardinals.
MaxContentLengthBuffer
directive to specify the
maximum bytecount for the proxy to buffer in order to find out
the content-length for the client - content-length is
always calculated for the logs, but the user migth
interrupt the connection if nothing seems to be happening, even
though it is the proxy that is just buffering the entire file in
order to find out the content-length before actually sending it
to the client.
HEAD
work always, even on proxy with other
protocols (FTP, Gopher...).
httpd
will retry PORT.
ScriptTimeOut
- scripts that do not finish in
this amount of time will be killed by httpd
. Default
value is 5 minutes.
.cache_info
files
sometimes being unwritable to actual caching processes).
CacheOnly
directive for specifying a set of URLs
that should be cached (for cases when there are only a few sites
that should be cached).
DELETE-Script
directive for specifying the CGI
script to handle DELETE
method.
NoProxy
directive to allow the proxy to do direct
access to some servers instead of connecting to another proxy
server (contains a list of domain names). This works exactly
like the no_proxy
environment variable on clients.
(Thanks to Rainer Klute for the patch!) This is only necessary
when running multiple proxy servers that connect to each other.
CacheDefaultExpiry
).
GcReqInterval
and
GcTimeInterval
- not very good criteria to
start doing garbage collection (GcDailyGc
is
better, giving the actual time to lauch gc)
-a
and -R
options (never used).
BodyTimeOut
replaced by ScriptTimeOut
include
s from Makefiles (not supported by
all the make
s).
#elif
preprocessor directive removed (wasn't
supported by all the HP preprocessors)
Port
directive -- server
didn't fork but rather the parent process served which caused
the service to eventually hang (this is the main reason for
this release).
CLIENT_CONTROL
removed from SOCKS mods since
httpd
has now native proxy protection support.
.gc_info
file.
PUT
and POST
can be configured to be
handled by external CGI scripts; PUT-Script
and POST-Script
directives
IdentityCheck
directive to turn on RFC931 remote
login name checking
REMOTE_IDENT
for CGI giving remote login name;
this was the only feature missing to be fully CGI/1.0 compiant
GET
request with
If-Modified-Since
header
kill -HUP
causes httpd
to re-read
its configuration file
PidFile
directive for specifying the file to write the process id
[makes it easy to send the HUP
signal
ServerRoot
directive to specify a "home directory" for httpd
icons
subdirectory under ServerRoot
tar
packet that contains a set of default icons; the easiest way
to configure the icons is to just set the
ServerRoot
to point to the binary distribution
directory [its name is cern_httpd
]
Welcome.html
,
welcome.html
and, for compatibility with NCSA
server, index.html
. Use of Welcome
directive will override all the defaults.
AlwaysWelcome
directive to configure if
/directory
and /directory/
are to be taken to mean the same thing, or should only
/directory/
be mapped to the overview page and
/directory
produce the directory listing.
Date:
header.
Port
directive to config file specifying the port
number to listen to.
ACLOverRide
directive to allow ACLs to override
the Mask
s set in the protection setup [without
this feature ACLs cannot allow anything more than what the
Mask
s allow, only restrict access further]. This
directive disables Mask
checking if an ACL file
is present.
Protection
directive defines a protection
setup and associates a name with it:
Protection prot-name { AuthType Basic ServerId Test-Server PasswdFile /where/ever/passwd GroupFile /where/ever/group UserId someuser GroupId somegroup GET-Mask list, of, users, and, groups POST-Mask list, of, users, and, groups PUT-Mask list, of, users, and, groups }The content between the curly braces is the same as used to go the the protection setup file. What's new is the possibility to specify the
UserId
and GroupId
for
the clild process when serving the request in protected mode.
This is not possible with external files for security reasons
[it is not possible inside the external file, but it
is not possible if the ids are set when calling that file; see
doc for more details].
Mask
directive for cases when
GET-Mask
, POST-Mask
and
PUT-Mask
are the same.
Protect
rule the prot-name is
specified instead of the file name; what's more is that
Protect
can now be used to protect also proxied
URLs:
Protect http:* prot-name Protect ftp:* prot-name Protect gopher:* prot-name
README-SOCKS
file in the source code distribution
for more information.
SIGPIPE
causes a normal child to exit; proxy
child will correctly stop writing to client socket but still
writes to cache file [previously just kept on writing to the
socket, too]
Content-Transfer-Encoding
, we
agreed upon using Content-Encoding
for
compression
1 year 2 months 3 weeks 2 days 5 days 20 hours 30 mins 2 secs 20:30 20:30:01 2 weeks 20:30
LogTime
,
LogFormat
, DirAccess
and
DirReadme
fixed; now paramters really are handled
in a case-insensitive manner.
AddType *.* text/plainbecause it would disable this smart feature.
GET
method [use of If-Modified-Since
header]
CacheNoConnect
directive [causes an error rather than document fetch when
the document is not in the cache]
-gc_only
command line option to do garbage
collection as a cron
job for sites that run
httpd
as a proxy from inetd
.
However, since httpd
now re-reads its
configuration files when it receives a HUP
signal,
it makes standalone operation now even more easy, and
inetd
should no longer be much more convenient.
Expires:
and Last-Modified:
field
never get cached [because they are usually generated by
scripts and should never be cached]; therefore I strongly
advice against the use of CacheDefaultExpiry
for
HTTP.
CacheDefaultExpiry ftp:* 2 weeks 4 days CacheDefaultExpiry gopher:* 6 days CacheUnused http:* 1 month CacheUnused ftp:* 2 weeks CacheUnused gopher:* 1 week 5 days 2 hours 1 min 30 secs
Last-Modified:
but without
Expires:
expire after 10% of the time that they
have been unmodified. CacheLastModifiedfactor
can be used to change this value, or turn this feature
Off
. Default value is 0.1 [=10%].
Thu, 10 Feb 1994 22:23:32 GMTThis date format is not conforming to the spec, so use of it is discouraged! This is only to make the proxy more robust.
NoCaching
directive to prevent certain URLs from
being cached at all.
GcDailyGc
to specify a daily garbage collection
time, by default 3:00. [Can be turned Off
, too.]
GcReqInterval
and
GcTimeInterval
[by default disabled].
CacheAccessLog
to specify a different log file
for cache accesses; also possible to make a separate log for
each remote host.
cgiutils
for producing HTTP1 replies from
CGI scripts, and for easily generating the Expires:
header given the time to live, e.g. "2 weeks 4 hours 30 mins".
ftp
with binary files work
x-compress
and x-gzip
work correctly
over proxy
http_proxy, ftp_proxy, gopher_proxy
and
wais_proxy
configuration directives cause proxy
to connect to the outside world through another proxy.
Environment variables with the same names have same effects, but
config file is user-friendlier for this.
CacheRoot
directive specifies cache root
directory, and turns on proxy caching.
Cache root directory must be dedicated to httpd
-
all files in there are subject to garbage collection.
CacheSize
directive; cache size should be several
megabytes, 50-100MB should give good results.
Cache may, however, temporarily grow a few megabytes bigger
than specified. Also, space taken up by directories
is not calculated in the current version.
http, ftp, gopher
with GET
method
get cached.
Authorization:
field).
Expires:
header when necessary. Until then, we don't cache
them.)
Expires:
header.
Last-Modified:
is used to
approximate expires. If a file hasn't changed in five
months the chances are it won't change during the next
week. On the other hand, if a file has changed
yesterday, it will probably change again pretty soon.
I know this is heuristic but until all the servers
give Expires:
this works much better than
not using it, so no flames about it.
Last-Modified:
not given use the time
given by CacheDefaultExpiry
directive,
default 7 days.
CacheLockTimeOut
directive (default 20 minutes).
During the lock is in effect, further requests to the same file
get retrieved from the remote host.
GcMemoryUsage
to advice gc about how
radical to be in memory use (more memory => smarter
gc).
GcTimeInterval
, how often to do gc.
GcReqInterval
, after how many requests to
do gc.
CacheLimit_1
, size in KB until which
files are equally valuable despite their size (200K).
CacheLimit_2
, size in KB after which
files get discarded because they are too big (4MB).
CacheClean
, remove all files older than
this (default 21 days).
CacheUnused
, remove all files that have
not been used in this long time (default 14 days).
Referer:
field ends up in error log when a
request fails.
UserId
and GroupId
to set default
uid and gid (used instead of nobody and nogroup).
SuffixCaseSense
configuration
directive.
DirAccess
DirReadme
AccessLog
ErrorLog
LogFormat
LogTime
-vv
command line option for Very Verbose trace
output. Outputs also request headers as they came in.
Otherwise like -v
flag.
Content-Transfer-Encoding
:
Content-Encoding
, although
spec says Content-Transfer-Encoding
;
I now output both
Content-Transfer-Encoding
sometimes
didn't show up although it should have, fixed.
Content-Transfer-Encoding
didn't come
up correctly with ftp, fixed.
-newlog
command line option, or
LogFormat
directive in configuration file.)
Content-Length:
(because it was wrong).
htadm
now uses the same file creation mask as in
the original password file.
httpd
2.14 to 2.15:
Rename your old /htbin scripts to end in .pp suffix!
htimage
upgraded to CGI/1.0
GMT
as an option
*.cern.ch
or 128.141.*.*
Location:
contains a #
label (doesn't do redirection-on-fly
but an actual redirection)
image/*
, audio/*
, */*
etc.
SIGPIPE
signals (doesn't die if client
suddenly closes connection).
/htbin
default directory is stripped off --
/htbin
feature is off unless there is an
htbin
rule in rule file defining the physical
/htbin
directory location.
/htbin
support added.
htadm
in distribution.
fail
rule handling fixed.
nobody
correctly, so setuid() should always
succeed (and even if it fails doesn't die).