First, update your package list and install Apache:
sudo apt update
sudo apt install apache2
You'll need to enable a few modules in Apache for the reverse proxy to work:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
After enabling these modules, restart Apache to apply the changes:
sudo systemctl restart apache2
Now, you need to configure Apache to forward requests to your Flask application. This is done by editing the Apache configuration files.
Create a new configuration file in /etc/apache2/sites-available/
:
sudo nano /etc/apache2/sites-available/myapp.conf
In this file, add the following configuration (adjust the ProxyPass
and ProxyPassReverse
directives to point to the port where your Flask app is running):
<VirtualHost *:80>
ServerName mydomain.com
ServerAdmin webmaster@localhost
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Replace mydomain.com
with your actual domain. Also, change http://127.0.0.1:5000/
to the address where your Flask app is running (if it's different).
After creating the configuration file, enable the new site and disable the default site (if not needed):
sudo a2ensite myapp.conf
sudo a2dissite 000-default.conf
Finally, restart Apache to apply your changes:
sudo systemctl restart apache2
Now, try accessing your domain (mydomain.com
in the example). Apache should forward the requests to your Flask application.
/etc/hosts
file to simulate a domain pointing to your local machine.This guide will help you set up your Apache reverse proxy to forward requests to your Flask application.