Getting Started with Flask Deployment: Gunicorn and Nginx Configuration Tutorial

This article introduces a solution for deploying Flask applications in a production environment: since Flask's built-in development server does not support high concurrency and is insecure, it needs to be paired with Gunicorn (a WSGI server) and Nginx (a reverse proxy). The steps are as follows: First, install Gunicorn (`pip install gunicorn`) and Nginx (for Ubuntu/Debian, use `apt install nginx`). When starting Gunicorn, use `gunicorn -w 4 -b 127.0.0.1:8000 app:app` (where `-w` sets the number of workers, `-b` binds the address and port, and `app:app` specifies the application entry). Next, configure Nginx by creating a configuration file (e.g., `flask_app`), set up reverse proxy to Gunicorn (`proxy_pass`), and handle static resources (`location /static`). Enable the configuration and restart Nginx. For verification, access `http://localhost` or test with `curl`. For advanced use, configure Gunicorn to start automatically on boot via systemd. Common issues include port occupation and incorrect static file paths, which require checking Gunicorn status or firewall rules. The core is running the application through Gunicorn and using Nginx.

Read More
Introduction to Nginx Reverse Proxy: Easily Achieve Frontend-Backend Separation

In a web front-end and back-end separation architecture, Nginx reverse proxy can solve problems such as cross-origin issues, complex domain name management, and back-end exposure. The reverse proxy acts as an intermediary server, so users access the back-end real service by visiting Nginx, which is transparent to users. When front-end and back-end are separated, reverse proxy can unify domain names (users only need to remember one domain name), hide the back-end address (enhancing security), and distribute requests by path (e.g., `/` for the front-end and `/api` for the back-end). Nginx is simple to install (Ubuntu uses `apt install nginx`, CentOS uses `yum install nginx`). The core of configuration is the `location` block: the front-end static files use `root` and `index` to point to the front-end directory, while the back-end API uses `proxy_pass` to forward to the real address, with `proxy_set_header` to pass header information. In practice, place the front-end files in the Nginx directory. After the back-end service is started, use `location` to distinguish paths. Nginx intercepts requests and forwards them, allowing users to complete front-end and back-end interaction by accessing a single domain name. Reverse proxy also supports extended functions such as load balancing and caching, making it a key tool in front-end and back-end separation architectures.

Read More
Nginx Reverse Proxy: An Introduction to Load Balancing on Linux Servers

### Introduction to Nginx Reverse Proxy and Load Balancing **Core Functions**: Reverse proxy hides backend servers and unifies user access; load balancing distributes pressure across multiple servers to avoid single-point overload. **Reverse Proxy**: Similar to a "front desk receptionist," it receives user requests and forwards them to backend servers. Users need not know the specific backend servers, enhancing security and management efficiency. **Load Balancing**: When there are multiple backend servers, Nginx uses the `upstream` module to distribute requests. The default "round-robin" strategy can be adjusted as needed: - **Weighted Round-Robin**: Distributes requests by `weight` (e.g., `server 192.168.1.101 weight=5`); - **IP Hash**: Fixes user requests to a specific server (`ip_hash` directive). **Configuration Steps**: 1. Define backend server group: `upstream backend_servers { server 192.168.1.101; server 192.168.1.102; }`; 2. Configure reverse proxy: `proxy_pass http://backend_servers;` with `proxy_set_header` to forward request headers; 3. Test configuration.

Read More
Beginner's Guide to Nginx: From Installation to Reverse Proxy Configuration

Nginx is a high-performance HTTP and reverse proxy server, lightweight and stable, suitable for scenarios such as website building and load balancing. Installation is divided into Ubuntu/Debian (`sudo apt install nginx`) and CentOS/RHEL (`sudo yum install nginx`). Verification is done with `nginx -v`. Start the service (`sudo systemctl start nginx`) and set it to start automatically (`sudo systemctl enable nginx`). Management commands include start/stop, restart, and reload configuration (`reload`). For core reverse proxy configuration: Create a site configuration file (e.g., `myapp.conf`) in `/etc/nginx/conf.d/`. Example configuration: The `server` listens on port 80, `server_name` is set to the domain name/IP, `location /` forwards to the backend port (e.g., `127.0.0.1:3000`) via `proxy_pass`, and passes Host and real IP through `proxy_set_header`. After configuration, check syntax with `nginx -t`, and `reload` to apply changes, then test access to the backend content. Notes: Open ports 80/443 in the firewall, ensure the backend service is running, and `proxy_pass` must start with `http://`/`https://`.

Read More