Setup Nginx proxy with MinIO Server
MinIO 서버로 Nginx 프록시 설정
Nginx is an open source Web server and a reverse proxy server.
Nginx는 오픈 소스 웹 서버이자 역방향 프록시 서버입니다.
In this recipe we will learn how to set up Nginx proxy with MinIO Server.
이 레시피에서는 MinIO 서버로 Nginx 프록시를 설정하는 방법을 배웁니다.
1. Prerequisites
1. 전제 조건
Install MinIO Server from here.
여기에서 MinIO 서버를 설치하세요.
2. Installation
2. 설치
Install Nginx from here.
여기에서 Nginx를 설치하세요.
3. Configuration
3. 구성
Proxy all requests
모든 요청 프록시
Add the following content as a file /etc/nginx/sites-enabled, e.g. /etc/nginx/sites-enables/minio and also remove the existing default file in same directory.
다음 내용을 /etc/nginx/sites-enabled 파일로 추가합니다. /etc/nginx/sites-enables/minio 또한 동일한 디렉토리에 있는 기존 기본 파일을 제거합니다.
server {
listen 80;
server_name example.com;
# To allow special characters in headers
# 헤더에 특수 문자를 허용하려면
ignore_invalid_headers off;
ignore_invalid_headers 꺼짐;
# Allow any size file to be uploaded.
# 모든 크기의 파일을 업로드할 수 있습니다.
# Set to a value such as 1000m; to restrict file size to a specific value client_max_body_size 0;
# 1000m와 같은 값으로 설정합니다. 파일 크기를 특정 값으로 제한하려면 client_max_body_size 0;
# To disable buffering proxy_buffering off;
# 버퍼링을 비활성화하려면 Proxy_buffering off;
location / {
proxy_http_version 1.1;
proxy_set_header Host $http_host;
# proxy_ssl_session_reuse on; # enable this if you are internally connecting over SSL
# proxy_ssl_session_reuse 켜기; # SSL을 통해 내부적으로 연결하는 경우 이를 활성화합니다.
proxy_read_timeout 15m; # Default value is 60s which is not sufficient for MinIO.
proxy_read_timeout 15분; # 기본값은 60초로 MinIO에는 충분하지 않습니다.
proxy_send_timeout 15m; # Default value is 60s which is not sufficient for MinIO.
proxy_send_timeout 15분; # 기본값은 60초로 MinIO에는 충분하지 않습니다.
proxy_request_buffering off; # Disable any internal request bufferring.
proxy_request_buffering 꺼짐; # 내부 요청 버퍼링을 비활성화합니다.
proxy_pass http://localhost:9000; # If you are using docker-compose this would be the hostname i.e. minio
proxy_pass http://localhost:9000; # docker-compose를 사용하는 경우 이는 호스트 이름, 즉 minio가 됩니다.
# Health Check endpoint might go here. See https://www.nginx.com/resources/wiki/modules/healthcheck/
# 상태 확인 엔드포인트가 여기에 올 수 있습니다. https://www.nginx.com/resources/wiki/modules/healthcheck/를 참조하세요.
# /minio/health/ready;
# /minio/상태/준비;
}
}
Note:
메모:
Replace example.com with your own hostname.
example.com을 자신의 호스트 이름으로 바꾸세요.
Replace http://localhost:9000 with your own server name.
http://localhost:9000을 자신의 서버 이름으로 바꾸세요.
Add client_max_body_size 1000m; in the http context in order to be able to upload large files — simply adjust the value accordingly. The default value is 1m which is far too low for most scenarios. To disable checking of client request body size, set client_max_body_size to 0.
client_max_body_size 1000m를 추가하세요. 대용량 파일을 업로드하려면 http 컨텍스트에서 값을 적절히 조정하면 됩니다. 기본값은 1m로 대부분의 시나리오에서 너무 낮습니다. 클라이언트 요청 본문 크기 확인을 비활성화하려면 client_max_body_size를 0으로 설정합니다.
Nginx buffers responses by default. To disable Nginx from buffering MinIO response to temp file, set proxy_buffering off;. This will improve time-to-first-byte for client requests.
Nginx는 기본적으로 응답을 버퍼링합니다. Nginx가 임시 파일에 대한 MinIO 응답을 버퍼링하지 못하도록 하려면 Proxy_buffering off;를 설정하세요. 이렇게 하면 클라이언트 요청의 첫 번째 바이트까지 걸리는 시간이 향상됩니다.
Nginx disallows special characters by default. Set ignore_invalid_headers off; to allow headers with special characters.
Nginx는 기본적으로 특수 문자를 허용하지 않습니다. ignore_invalid_headers를 끄도록 설정하십시오. 특수 문자가 포함된 헤더를 허용합니다.
Proxy requests based on the bucket
버킷 기반 프록시 요청
If you want to serve web-application and MinIO from the same nginx port then you can proxy the MinIO requests based on the bucket name using path based routing.
동일한 nginx 포트에서 웹 애플리케이션과 MinIO를 제공하려는 경우 경로 기반 라우팅을 사용하여 버킷 이름을 기반으로 MinIO 요청을 프록시할 수 있습니다.
For nginx this uses the location directive, which also supports object key pattern-match based proxy splitting.
nginx의 경우 이는 객체 키 패턴 일치 기반 프록시 분할을 지원하는 위치 지시문을 사용합니다.
# Proxy requests to the bucket "photos" to MinIO server running on port 9000
# 버킷 "사진"에 대한 요청을 포트 9000에서 실행되는 MinIO 서버로 프록시합니다
location /photos/ {
proxy_http_version 1.1;
proxy_buffering off;
# proxy_ssl_session_reuse on; # enable this if you are internally connecting over SSL
# proxy_ssl_session_reuse 켜기; # SSL을 통해 내부적으로 연결하는 경우 이를 활성화합니다
proxy_read_timeout 15m; # Default value is 60s which is not sufficient for MinIO.
proxy_read_timeout 15분; # 기본값은 60초로 MinIO에는 충분하지 않습니다.
proxy_send_timeout 15m; # Default value is 60s which is not sufficient for MinIO.
proxy_send_timeout 15분; # 기본값은 60초로 MinIO에는 충분하지 않습니다.
proxy_request_buffering off; # Disable any internal request bufferring.
proxy_request_buffering 꺼짐; # 내부 요청 버퍼링을 비활성화합니다.
proxy_set_header Host $http_host;
proxy_set_header 호스트 $http_host;
proxy_pass http://localhost:9000;
}
# Proxy any other request to the application server running on port 9001
# 포트 9001에서 실행되는 애플리케이션 서버에 다른 요청을 프록시합니다
location / {
proxy_http_version 1.1;
proxy_buffering off;
# proxy_ssl_session_reuse on; # enable this if you are internally connecting over SSL
# proxy_ssl_session_reuse 켜짐; # SSL을 통해 내부적으로 연결하는 경우 이를 활성화합니다
proxy_read_timeout 15m; # Default value is 60s which is too less for MinIO.
proxy_read_timeout 15분; # 기본값은 60초로 MinIO에 비해 너무 적습니다.
proxy_send_timeout 15m; # Default value is 60s which is too less for MinIO.
proxy_send_timeout 15분; # 기본값은 60초로 MinIO에 비해 너무 적습니다.
proxy_request_buffering off; # Disable any internal request bufferring.
proxy_request_buffering 꺼짐; # 내부 요청 버퍼링을 비활성화합니다.
proxy_set_header Host $http_host;
Proxy_set_header 호스트 $http_host;
proxy_pass http://localhost:9001;
}
4. Recipe Steps
4. 레시피 단계
Step 1: Start MinIO server.
1 단계: MinIO 서버를 시작합니다.
minio server /mydatadir
Step 2: Restart Nginx server.
2 단계: Nginx 서버를 다시 시작합니다.
sudo service nginx restart
Explore Further
더 자세히 살펴보세요
Refer this blog post for various MinIO and Nginx configuration options.
다양한 MinIO 및 Nginx 구성 옵션에 대해서는 이 블로그 게시물을 참조하세요.