Home  >  Article  >  Backend Development  >  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?

WBOY
WBOYOriginal
2023-09-05 13:16:451042browse

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

  1. Nginx proxy server:
    Nginx is a high-performance HTTP and reverse proxy server. It is able to handle a large number of concurrent connections and has low memory consumption. Nginx is able to achieve horizontal scaling of services by sending requests to multiple backend servers and distributing them according to a load balancing algorithm.
  2. Docker Containers:
    Docker is a lightweight virtualization technology that enables rapid deployment and portability by packaging applications and their dependencies into containers. Each container runs independently and can be deployed on any Docker-enabled host.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn