
# conf for yaws


# first we have a set of globals
# That apply to all virtual servers


# This is the directory where all logfiles for
# all virtual servers will be written

logdir = /var/log/yaws

# This the path to a directory where additional
# beam code can be placed. The daemon will add this
# directory to its search path

ebin_dir = /usr/local/lib/yaws/examples/ebin
ebin_dir = /var/yaws/ebin


# This is a directory where application specific .hrl
# files can be placed. application specifig .yaws code can
# then include these .hrl files

include_dir = /usr/local/lib/yaws/examples/include

# Set this to an integer value to control
# max number of connections from clients into the server
max_connections = nolimit

# Normally, yaws does not restrict the number of times a connection is
# kept alive using keepalive. Setting this parameter to an integer X
# will ensure that connections are closed once they have been used X times.
# This can be a useful to guard against long running connections 
# collecting too much garbage in the erlang VM.
keepalive_maxuses = nolimit

# Override the garbage collection option parameters for processes
# which handle new connections. Useful for systems which expect long lived
# connections which handle a lot of data. The default value is erlangs
# default. Valid options are {fullsweep_after, X} and/or {min_heap_size, Y} where
# X and Y are integers. See erlangs erlang:spawn_opt/4 function for more details.
# The value type is a quoted string containing an erlang proplist
process_options = "[]"

# This is a debug variable, possible values are http | traffic | false
# It is also possible to set the trace (possibly to the tty) while
# invoking yaws from the shell as in
# yaws -i -T -x (see man yaws)

trace = false

# Enable this if we want to use the old OTP ssl implementation
# OTP R13B03 is known to work with this flag set         to false (default)
use_old_ssl = false


# it is possible to have yaws start additional 
# application specific code at startup
# 
# runmod = mymodule


# By default yaws will copy the erlang error_log and
# end write it to a wrap log called report.log (in the logdir)
# this feature can be turned off. This would typically
# be the case when yaws runs within another larger app

copy_error_log = true


# Logs are wrap logs

log_wrap_size = 1000000


# Possibly resolve all hostnames in logfiles so webalizer
# can produce the nice geography piechart

log_resolve_hostname = false



# fail completely or not if yaws fails 
# to bind a listen socket
fail_on_bind_err = true




# If HTTP auth is used, it is possible to have a specific
# auth log.

auth_log = true


# When we're running multiple yaws systems on the same 
# host, we need to give each yaws system an individual
# name. Yaws will write a number of runtime files under
# ${HOME}/.yaws/yaws/${id}
# The default value is "default"
# If we're not planning to run multiple webservers on the
# same host it's mych better to leave this value unset since
# then all the ctl function (--stop et.el) work without having
# to supply the id.

# id = myname


# earlier versions of Yaws picked the first virtual host
# in a list of hosts with the same IP/PORT when the Host:
# header doesn't match any name on any Host
# This is often nice in testing environments but not
# acceptable in real live hosting scenarios
# think http://suckmydick.bigcompany.com

pick_first_virthost_on_nomatch = true

# If the HTTP client session is to be kept alive, wait this many
# milliseconds for a new request before timing out the connection. Note
# that infinity is a valid value but it's not recommended.

keepalive_timeout = 30000

# All unices are broken since it's not possible to bind to
# a privileged port (< 1024) unless uid==0
# There is a contrib in jungerl which makes it possible by means 
# of an external setuid root programm called fdsrv to listen to
# a privileged port.
# If we use this feature, it requires fdsrv to be properly installed.
# Doesn't yet work with SSL.
# Read http://yaws.hyber.org/privbind.yaws for more info and a better 
# solution than fd_srv

use_fdsrv = false




# and then a set of virtual servers
# First two virthosted servers on the same IP (0.0.0.0)
# in this case, but an explicit IP can be given as well

<server >
        port = 80
        listen = 0.0.0.0
        docroot = /var/yaws/www
        appmods = <cgi-bin, yaws_appmod_cgi>        
</server>

<server localhost>
        port = 80
        listen = 0.0.0.0
        docroot = /tmp
        dir_listings = true
        statistics = true
        <auth>
                realm = foobar
                dir = /
                user = foo:bar
                user = baz:bar
        </auth>
</server>



# And then an ssl server

<server >
        port = 443
        docroot = /tmp
        listen = 0.0.0.0
        dir_listings = true
        <ssl>  
                keyfile = /etc/yaws/yaws-key.pem
                certfile = /etc/yaws/yaws-cert.pem
                depth = 0
        </ssl>
</server>
                                
        






