Skip to content

Listener configuration

skruger edited this page Aug 3, 2011 · 2 revisions

Plain Listener

{listen_plain,{ip,Address},Port,ConfigList}
Address = ({A,B,C,D}|{A,B,C,D,E,F,G,H}|"ip-string"|"::"|"0.0.0.0")
Port = int()
ConfigList = listen_config()
listen_config() = [{protocol,ProtcolFamily}|{num_listeners,Count}|inet6|
                   {pool,PoolName}|{pool_retries,PoolRetries}|{backend_port,Port}|
                   {proxy_host,{{ip,Address},Port}}]
ProtocolFamily = http|socks|http_admin|raw  %% implements proxy_protocol behaviour
PoolName = atom() %% See mod_balance
PoolRetries = int() %% Number of times to request a new pool member before failing to connect

SSL Listener

{listen_ssl,{ip,Address},Port,SSLConfigList}
SSLConfigList = listen_config()|ssl_listen_config()
ssl_listen_config() = [{keyfile,PEMKeyFile}|{certfile,PEMCertFile}]

Full Configuration Example

%% Log levels:
% 0: CRITICAL
% 1: ERROR
% 2: WARNING
% 3: INFO
% 4: DEBUG
% 5: DEBUG+
{log_level, 3}.

{listeners,[
        {listen_plain,{ip,{0,0,0,0}},3128,
           %% http forward proxy
           [{protocol,http},
            enable_gzip,
            {stream_filters,[mod_forward_proxy,filter_auth]},
            {filter_auth,[{type,basic},{mode,proxy}]}
           ]},
        {listen_plain,{ip,{0,0,0,0}},1080,
           %% SOCKS 4/5 forward proxy
           [{protocol,socks},
            enable_gzip,
            {stream_filters,[mod_forward_proxy]}
           ]},
        {listen_plain,{ip,{0,0,0,0}},3306,
           %% Mysql load balancing
           [{protocol,raw},
            {pool,mysqlservers},
            {backend_port,3306}
           ]},
        {listen_ssl,{ip,{0,0,0,0}},443,
           %% HTTP admin interface
           [{protocol,http_admin},
            {docroot,{zip,"/var/lib/surrogate/docroot.zip"}},
            {docroot,{mnesia,surrogate_webadmin}}  
            %% These two docroots have not been developed yet.  They won't work as of 20110803.
           ]}
    ]}.

%% Users with access to HTTP admin interface
{acl,{http_admin,"user1"}}.
{acl,{http_admin,"user2"}}.

{modules,[
    {mod_mysql,[{sql_auth_conn,"localhost",3306,"user","password","database"}]},
    {proxy_auth,[
                %{default_auth,mnesia}
                {default_auth,{mysql,sql_auth_conn}}
                ]},
    {mod_cluster,[
                 {ifconfig_script,"/sbin/ifconfig"},
                 {ip_script,"/sbin/ip"}, %% IPv6 address management
                 {listen_interface,"eth0"},
                 {quorum,1} %% Number of living nodes to have quorum.
                 ]},
    {mod_balance,[
        {mysqlservers,balance_round_robin,[
                {hosts,[
                    {192,168,1,51},
                    {192,168,1,52},
                    {192,168,1,53}]},
                {checks,[
                    {healthcheck_tcp,[{port,3306}]}
                    ]}
                ]}
        ]}
    ]}.