* httpd ** ssl Run httpd using inets. Tell inets what to start by configuring 'services' in a config file that you pass to erl(1) at startup: $ cat httpd_inets.config [{inets, [{services, [ {httpd, [{proplist_file, "httpd_inets_props.conf"}]} ]}]}]. $ Then start erl with `-config httpd_inets'. In erl, start inets: 1> inets.start(). ok There are two ways to configure the httpd server. Either configure httpd using a props list with all the httpd arguments: $ cat httpd_inets_props.conf [ {port, 8080}, {bind_address, {127,0,0,1}}, {server_name, "httpd_inets_FQDN"}, {server_root, "/tmp/httpd_inets"}, {document_root, "/tmp/httpd_inets/docroot"}, {socket_type, essl}, {ssl_certificate_file, "/tmp/httpd_inets/02.pem"}, {ssl_certificate_key_file, "/tmp/httpd_inets/srv1.key"}, {ssl_ca_certificate_file, "/tmp/httpd_inets/01.pem"} ]. $ In the example config for inets above, this is what will be used. Or configure httpd using an Apache like configuration file. Configure inets to start httpd with {file, "httpd_config"} in httpd_inets.config. Here's a config file equivalent to what's seen above in the props list: $ cat httpd_config.OFF ServerName httpd_inets_FQDN ServerRoot /tmp/httpd_inets DocumentRoot /tmp/httpd_inets/docroot Port 8080 SocketType essl SSLCertificateFile /tmp/httpd_inets/02.pem SSLCertificateKeyFile /tmp/httpd_inets/srv1.key SSLCACertificateFile /tmp/httpd_inets/01.pem $ ** dynamic content Configuring httpd with {erl_script_alias, {"/d", [httpd_inets]}} and compiling httpd_inets.erl will make the following URL refer to httpd_inets:hello/3: https://localhost:8080/d/httpd_inets:hello Here's an example of what http_inets.erl can look like: $ cat httpd_inets.erl -module('httpd_inets'). -export([hello/3]). hello(SessionID, _Env, _Input) -> mod_esi:deliver(SessionID, [ "Content-Type: text/html\r\n\r\n", "hello, erlang world" ]). $ httpd config 'modules' seems to be crucial to get right, including the order of the modules listed. The mod_esi module is the one providing the erl_script_alias functionality. Here's a configuration that's working with Erlang R15B01 (erts-5.9.1): {modules, [mod_alias, mod_auth, mod_esi, mod_get, mod_head, mod_log, mod_disk_log]},