Tags | kubernetes nginx |
Hard Prerequisites | |
IMPORTANT: Please review these prerequisites, they include important information that will help you with this content. | |
|
|
Soft Prerequisites |
|
We will now connect the Nginx and the Python application by configuring Nginx as a reverse proxy, pointing the /api
route to the Python app local address. With that, we will be able to access the Python app externally at https://your-domain/api
.
First, add the following block in the nginx.conf
file, under the server
HTTPS block.
location /api {
# local Python app address
proxy_pass http://127.0.0.1:5000;
}
Also, replace the nginx/index.html
file with the following content. It will add a nice frontend our application.
<!DOCTYPE html>
<html>
<head>
<title>Welcome to This Nginx Page</title>
<style>
#status-light {
width: 20px;
height: 20px;
border-radius: 50%;
background-color: red;
margin-top: 20px;
}
</style>
</head>
<body>
<h1>Welcome, press the button right now</h1>
<p>This is a simple landing page hosted by Nginx on your server.</p>
<button id="get-status-button">Press my button</button>
<p>Button Press Count: <span id="count">0</span></p> <!-- Added this line -->
<div id="status-light"></div>
<script>
// JavaScript code to handle the button click and status update
document.getElementById('get-status-button').addEventListener('click', () => {
// Send a request to increment the value
fetch('/api/pressed', { method: 'GET' }) // Sending a GET request to the /pressed route
.then(response => {
if (response.ok) {
return response.json();
}
throw new Error('Request failed.');
})
.then(data => {
// Update the count display
document.getElementById('count').textContent = data.count;
// Log the response for debugging
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
});
</script>
</body>
</html>
On your EC2 instance, pull the changes, copy the files and restart Nginx:
# pull the changes
cd /home/ubuntu/umuzi-k8s
git pull
# copy files
sudo cp nginx/nginx.conf /etc/nginx/conf.d/nginx.c
sudo cp nginx/index.html /var/www/html/
# restart nginx
sudo systemctl restart nginx
Now you should be able to access the Python app externally! Try it on your browser with the https://your-domain
address.