You may want to put Apache in front of your Racket Web Server application. Apache can rewrite and proxy requests for a private (or public) Racket Web Server:
RewriteEngine on
RewriteRule ^(.*)$ http://localhost:8080/1γγ« [P,NE]
The first argument to RewriteRule is a match pattern. The second is how to rewrite the URL. The bracketed part contains flags that specify the type of rewrite, in this case the P flag instructs Apache to proxy the request. (If you do not include this, Apache will return an HTTP Redirect response and the client will make a second request to localhost:8080 which will not work on a different machine.) In addition, the NE flag is needed to avoid escaping parts of the URL — without it, a ; is escaped as %3B which will break the proxied request.
See Apache’s documentation for more details on RewriteRule.
The server has no option for this, but you can add it very easily. There’s two techniques.
echo $$ > PID
exec run-web-server
Using exec will reuse the same process, and therefore, the PID file will be accurate.
Second, if you want to make your own Racket start-up script, you can write:
(start-server)
This requires an SSL certificate and private key. This is very platform specific, but we will provide the details for using OpenSSL on UNIX:
openssl genrsa -des3 -out private-key.pem 4096
This will generate a new private key, but it will have a passphrase on it. You can remove this via:
Now, we generate a self-signed certificate:
openssl req -new -x509 -nodes -sha1 -days 365 -key private-key.pem > server-cert.pem
(Each certificate authority has different instructions for generating certificate signing requests.)
We can now start the server with:
plt-web-server --ssl
The Web Server will start on port 443 (which can be overridden with the -p option) using the "private-key.pem" and "server-cert.pem" we’ve created.
Refer to Limiting Requests.