>  기사  >  백엔드 개발  >  Docker에서 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개를 구현하는 방법은 무엇입니까?

Docker에서 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개를 구현하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-09-05 15:52:521030검색

Docker에서 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개를 구현하는 방법은 무엇입니까?

Docker에서 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개를 구현하는 방법은 무엇입니까?

최신 인터넷 애플리케이션에서 재개 가능한 다운로드는 네트워크가 중단되거나 다른 이유로 전송이 중단된 경우에도 사용자가 대용량 파일을 업로드하거나 다운로드할 때 계속 전송할 수 있도록 하는 매우 중요한 기능입니다. 이 기사에서는 Docker 및 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개를 구현하는 방법을 소개합니다.

먼저 파일 업로드 및 다운로드 기능을 제공하는 간단한 웹 서비스를 만들어야 합니다. 다음은 Python Flask 프레임워크를 사용하여 생성된 샘플 코드입니다.

from flask import Flask, request, send_from_directory

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = '/uploads'

@app.route('/upload', methods=['POST'])
def upload():
    f = request.files['file']
    f.save(os.path.join(app.config['UPLOAD_FOLDER'], f.filename))
    return 'File uploaded successfully'

@app.route('/download/<filename>', methods=['GET'])
def download(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

다음으로 Docker를 사용하여 이 웹 서비스를 실행할 컨테이너를 생성해야 합니다. 먼저 컨테이너 이미지를 정의하기 위해 Dockerfile을 생성해야 합니다. 다음은 단순화된 Dockerfile 예입니다.

FROM python:3.7

WORKDIR /app

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

동일한 디렉터리에 요구 사항.txt 파일을 만들고 다음 콘텐츠를 추가합니다.

Flask

다음으로 다음 명령을 사용하여 Docker 이미지를 빌드합니다.

docker build -t web-service .

빌드가 완료되면, 다음 명령을 사용하여 컨테이너를 실행합니다.

docker run -p 5000:5000 -v /path/to/uploads:/uploads --name web-service-container web-service

위 명령에서는 호스트의 /uploads 폴더를 컨테이너의 /uploads 폴더에 마운트하여 업로드된 파일을 저장합니다.

이제 Docker에서 간단한 웹 서비스를 성공적으로 실행했습니다. 다음으로 Nginx 프록시 서버를 사용하여 중단점 재개 기능을 구현하겠습니다.

먼저 Nginx 구성 파일을 수정해야 합니다. Nginx의 구성 파일에 다음을 추가합니다.

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://web-service-container:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 0;
        proxy_request_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

위 구성에서는 Docker 컨테이너의 웹 서비스에 대한 요청을 프록시하도록 Nginx를 구성했습니다. your_domain.com을 자신의 도메인 이름이나 IP 주소로 바꾸세요.

다음으로 컨테이너에서 Nginx 프록시 서버를 실행하려면 Docker-compose 파일을 업데이트해야 합니다. 동일한 디렉터리에 docker-compose.yml 파일을 생성하고 다음 내용을 추가합니다.

version: '3'

services:
  web-service:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - /path/to/uploads:/uploads

  nginx:
    image: nginx:latest
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 80:80
    depends_on:
      - web-service

위 구성에서는 nginx라는 서비스를 추가하고 Nginx 구성 파일을 컨테이너에 마운트했습니다.

이제 다음 명령을 사용하여 이 Docker 조합을 시작합니다.

docker-compose up

이 시점에서 Docker의 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개 기능을 성공적으로 구현했습니다. 대용량 파일 업로드 테스트를 통해 재개 기능이 제대로 작동하는지 확인할 수 있습니다.

요약:

이 글에서는 Docker와 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개 기능을 구현하는 방법을 소개합니다. 간단한 웹 서비스를 생성하고 Docker 컨테이너를 사용하여 이를 실행함으로써 이를 수행합니다. 그런 다음 요청을 Docker 컨테이너의 웹 서비스로 전달하도록 Nginx 프록시 서버를 구성했습니다. 이러한 방식으로 우리는 안정적인 파일 업로드 및 다운로드 기능과 향상된 사용자 경험을 달성했습니다.

위 내용은 Docker에서 Nginx 프록시 서버를 사용하여 웹 서비스의 중단점 재개를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.