Home >Backend Development >PHP Tutorial >How to use Nginx proxy server in Docker to achieve horizontal expansion of web services?
How to use Nginx proxy server in Docker to achieve horizontal expansion of web services?
Introduction:
In the development of today's Internet, high availability and high efficiency are the focus of every Web service. In order to provide reliable services and achieve horizontal scalability, we usually use proxy servers to load balance requests. As a lightweight and portable container technology, Docker can simplify the deployment process when implementing proxy servers. This article will introduce how to use Nginx proxy server in Docker to achieve horizontal expansion of web services.
Part One: Theoretical Introduction
Part 2: Practical Exercise
The following are the steps to use Nginx proxy server in Docker to achieve horizontal expansion of Web services:
Step 1: Install Docker and Docker Compose
First, we need to install Docker and Docker Compose on the host. For specific installation methods, please refer to the official documentation.
Step 2: Create backend services
In this example, we will use two simple backend services to simulate the actual scenario. Create two folders to store the code of the backend service, and write a simple Python service script, as shown below:
// backend_service_1.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Backend Service 1'
if name == '__main__ ':
app.run(debug=True, host='0.0.0.0')
// backend_service_2.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Backend Service 2'
if name == '__main__':
app.run(debug=True, host='0.0.0.0')
Step 3: Create a Docker container
Before creating a Docker container, we You need to write a Dockerfile to build the container image. Create a file named "Dockerfile" in the folder where the backend service code is stored, and add the following content:
FROM python:3
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./ backend_service_1.py" ]
In the same folder, create a file named "requirements.txt" and add the following content:
flask==1.1.2
Repeat the above steps to create a Docker container for backend service 2. Just change the CMD command in the Dockerfile to:
CMD [ "python", "./backend_service_2.py" ]
Step 4: Create Nginx proxy server container
On the host Create a file named "docker-compose.yml" and add the following content:
version: '3'
services:
nginx:
image: nginx:stable-alpine ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - backend_service_1 - backend_service_2
backend_service_1:
build: context: ./backend_service_1 dockerfile: Dockerfile
backend_service_2:
build: context: ./backend_service_2 dockerfile: Dockerfile
Next, create a file named "nginx.conf" in the same directory and add the following content:
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream backend { server backend_service_1:5000; server backend_service_2:5000; } server { listen 80; location / { proxy_pass http://backend; } }
}
Step 5: Start the container
Open a terminal and navigate Go to the directory containing the above files and run the following command:
$ docker-compose up
This will start the Nginx proxy server as well as the two backend service containers.
Part 3: Test
Now, we can test whether the Nginx proxy server is working properly by accessing http://localhost. Every time you refresh the page, you'll alternate between the two backend services to get responses.
Part 4: Conclusion
By using the Nginx proxy server in Docker, we can achieve horizontal expansion of Web services. This approach not only simplifies the deployment process but also provides a highly available and efficient solution. I hope this article will help you understand how to use Nginx proxy server in Docker to achieve horizontal expansion of web services.
The above is the detailed content of How to use Nginx proxy server in Docker to achieve horizontal expansion of web services?. For more information, please follow other related articles on the PHP Chinese website!