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 hours
now 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
includes from Makefiles (not supported by
all the makes).
#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 Masks set in the protection setup [without
this feature ACLs cannot allow anything more than what the
Masks 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/plain
because 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 GMT
This 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).