What we are going to do today is Serving a static content without using Apache
, nginx
or IIS
. What we need is creating Http server with expressjs
. This post goes into how this can be achieved.
if you don’t have node js already installed you can Install & run your first application Nodejs.
Install express
Express
is a nodejs framework that has great built in capabilities to serve static content.
Create a webserver
directory to hold your application, and make that your working directory and then create www
$ mkdir webserver
$ cd webserver
$ mkdir www
create a file ‘app.js’
Now install Express in the webserver
directory and save it in the dependencies list. For example:
$ npm install express
Let’s type some code
add the following code to app.js file, We use Visual studio code to edit the file:
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/www'));
app.listen(3000);
add index.html
file to www
folder:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link href='/style.css' rel='stylesheet' type='text/css'>
</head>
<body>
<h1> Serving static contents with expressjs app </h1>
<img src="/image.jpg" alt="image">
</body>
</html>
Add style.css
file to www
folder:
h1 {
background-color: rosybrown
}
then Add an image to www
folder and name it image.jpg
Run the application
Run the application:
$ node app.js
The application starts a server and listens on port 3000 for connections. The app responds with “Welcome to express api” for requests to the root URL (/) or route.
load http://localhost:3000/ in a browser to see the output.
Alow contents to be cached
Now our http server is working, let’s add some functionalities like caching :
Modify you app.js file :
app.use(express.static(__dirname + '/www', { maxAge: 3600000 }));
max-age property of the Cache-Control header is in milliseconds (3600000 =1 hour)
Save the file and run th application again
To stop the app Ctrl + C
Any files under the
www
folder will be server
**This is your static content web server working **