Skip to content

Commit 13d6980

Browse files
author
Saiful Alam
committed
first commit
0 parents  commit 13d6980

File tree

7 files changed

+177
-0
lines changed

7 files changed

+177
-0
lines changed

Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
FROM nginx:mainline-alpine
2+
RUN rm /etc/nginx/conf.d/*
3+
ADD hello.conf /etc/nginx/conf.d/
4+
ADD index.html /usr/share/nginx/html/

DockerfilePlainText

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM nginx:mainline-alpine
2+
RUN rm /etc/nginx/conf.d/*
3+
ADD hello-plain-text.conf /etc/nginx/conf.d/

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
# NGINX webserver that serves a simple page containing its hostname, IP address and port as wells as the request URI and the local time of the webserver.
3+
4+
The images are uploaded to Docker Hub -- https://hub.docker.com/r/saifulmr/nginx-hello/.
5+
6+
How to run:
7+
```
8+
$ docker run -P -d saifulmr/nginx-hello
9+
```
10+
11+
Now, assuming we found out the IP address and the port that mapped to port 80 on the container, in a browser we can make a request to the webserver and get the page below: ![hello](hello.png)
12+
13+
A plain text version of the image is available as `saifulmr/nginx-hello:plain-text`. This version returns the same information in the plain text format:
14+
```
15+
$ curl <ip>:<port>
16+
Server address: 172.17.0.2:80
17+
Server name: hello1
18+
Date: 19/Sep/2023:16:05:05 +0000
19+
Host: demo.nginxlab.dev
20+
URI: /
21+
Cookie-Session:
22+
Remote-Address:
23+
X-Forwarded-For:
24+
Request ID: 48ba0db334a6ed165e783469c2af868f
25+
```
26+
27+
The images were created to be used as simple backends for various load balancing demos.

hello-plain-text.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
server {
2+
listen 80;
3+
listen [::]:80;
4+
5+
location / {
6+
default_type text/plain;
7+
expires -1;
8+
return 200 'Server address: $server_addr:$server_port\nServer name: $hostname\nDate: $time_local\nURI: $request_uri\nRequest ID: $request_id\n';
9+
}
10+
}

hello.conf

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
map $http_cookie $has_session {
2+
default 0;
3+
"~*session=([^;]+)" 1;
4+
}
5+
6+
7+
server {
8+
listen 80;
9+
listen [::]:80;
10+
11+
location / {
12+
root /usr/share/nginx/html;
13+
try_files /index.html =404;
14+
expires -1;
15+
sub_filter_once off;
16+
sub_filter 'server_hostname' '$hostname';
17+
sub_filter 'server_address' '$server_addr:$server_port';
18+
sub_filter 'server_url' '$request_uri';
19+
sub_filter 'server_date' '$time_local';
20+
sub_filter 'http_host' '$http_host';
21+
sub_filter 'http_x_forwarded_for' '$http_x_forwarded_for';
22+
sub_filter 'cookie_session' '$cookie_session';
23+
sub_filter 'remote_address' '$remote_addr';
24+
sub_filter 'request_id' '$request_id';
25+
26+
if ($has_session = 0) {
27+
set $session_hash $request_id;
28+
add_header Set-Cookie "session=$session_hash; Path=/; HttpOnly";
29+
}
30+
31+
}
32+
33+
}

hello.png

270 KB
Loading

index.html

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Hello World</title>
5+
<link href="data:image/png;base64,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" rel="icon" type="image/png" />
6+
<style>
7+
body {
8+
margin: 0px;
9+
font: 20px 'RobotoRegular', Arial, sans-serif;
10+
font-weight: 100;
11+
height: 100%;
12+
color: #0f1419;
13+
}
14+
div.info {
15+
display: table;
16+
background: #e8eaec;
17+
padding: 20px 20px 20px 20px;
18+
border: 1px dashed black;
19+
border-radius: 10px;
20+
margin: 0px auto auto auto;
21+
}
22+
div.info p {
23+
display: table-row;
24+
margin: 5px auto auto auto;
25+
}
26+
div.info p span {
27+
display: table-cell;
28+
padding: 10px;
29+
}
30+
img {
31+
width: 176px;
32+
margin: 36px auto 36px auto;
33+
display:block;
34+
}
35+
div.smaller p span {
36+
color: #3D5266;
37+
}
38+
h1, h2 {
39+
font-weight: 100;
40+
}
41+
div.check {
42+
padding: 0px 0px 0px 0px;
43+
display: table;
44+
margin: 36px auto auto auto;
45+
font: 12px 'RobotoRegular', Arial, sans-serif;
46+
}
47+
#footer {
48+
position: fixed;
49+
bottom: 36px;
50+
width: 100%;
51+
}
52+
#center {
53+
width: 400px;
54+
margin: 0 auto;
55+
font: 12px Courier;
56+
}
57+
58+
</style>
59+
<script>
60+
var ref;
61+
function checkRefresh(){
62+
if (document.cookie == "refresh=1") {
63+
document.getElementById("check").checked = true;
64+
ref = setTimeout(function(){location.reload();}, 1000);
65+
} else {
66+
}
67+
}
68+
function changeCookie() {
69+
if (document.getElementById("check").checked) {
70+
document.cookie = "refresh=1";
71+
ref = setTimeout(function(){location.reload();}, 1000);
72+
} else {
73+
document.cookie = "refresh=0";
74+
clearTimeout(ref);
75+
}
76+
}
77+
</script>
78+
</head>
79+
<body onload="checkRefresh();">
80+
<img alt="NGINX Logo" src="data:image/png;base64,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"/>
81+
<div class="info">
82+
<p><span>Server&nbsp;address:</span> <span>server_address</span></p>
83+
<p><span>Server&nbsp;name:</span> <span>server_hostname</span></p>
84+
<p class="smaller"><span>Date:</span> <span>server_date</span></p>
85+
<p class="smaller"><span>Host:</span> <span>http_host</span></p>
86+
<p class="smaller"><span>URI:</span> <span>server_url</span></p>
87+
<p class="smaller"><span>Cookie-Session:</span> <span>cookie_session</span></p>
88+
<p class="smaller"><span>Remote-Address:</span> <span>remote_address</span></p>
89+
<p class="smaller"><span>X-Forwarded-For:</span> <span>http_x_forwarded_for</span></p>
90+
</div>
91+
<div class="check"><input type="checkbox" id="check" onchange="changeCookie()"> Auto Refresh</div>
92+
<div id="footer">
93+
<div id="center" align="center">
94+
Request ID: request_id<br/>
95+
&copy; NGINX, Inc. 2023
96+
</div>
97+
</div>
98+
</body>
99+
</html>
100+

0 commit comments

Comments
 (0)