Minio控制台在NGINX反向代理后面无法访问
我正在尝试将example.com/minio
的位置重定向到Minio Console,该控制台均在Nginx代理后面运行。我的问题是,当我试图将Minio端点换向路径时,例如/minio
它不起作用,但是当我运行minio
反向代理时在NGINX反向代理中的root路径上,它起作用。我真的找不到问题。
这是我的撰写文件:
services:
nginx:
container_name: nginx
image: nginx
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./log/nginx:/var/log/nginx/
minio:
image: minio/minio
container_name: minio
volumes:
- ./data/minio/:/data
command: server /data --address ':9000' --console-address ':9001'
environment:
MINIO_ROOT_USER: minio_admin
MINIO_ROOT_PASSWORD: minio_123456
ports:
- 9000
- 9001
restart: always
logging:
driver: "json-file"
options:
max-file: "10"
max-size: 20m
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
我的nginx配置就是这样:
server {
listen 80;
server_name example.com;
# To allow special characters in headers
ignore_invalid_headers off;
# 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;
# To disable buffering
proxy_buffering off;
access_log /var/log/nginx/service-access.log;
error_log /var/log/nginx/service-error.log debug;
location / {
return 200 "salam";
default_type text/plain;
}
location /minio {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://minio:9001;
}
}
以及curling端点的响应($ curl -k -k http://example.com/minio
):
<null>
<html lang="en">
<head>
<meta charset="utf-8" />
<base href="/" />
<meta content="width=device-width,initial-scale=1" name="viewport" />
<meta content="#081C42" media="(prefers-color-scheme: light)" name="theme-color" />
<meta content="#081C42" media="(prefers-color-scheme: dark)" name="theme-color" />
<meta content="MinIO Console" name="description" />
<link href="./styles/root-styles.css" rel="stylesheet" />
<link href="./apple-icon-180x180.png" rel="apple-touch-icon" sizes="180x180" />
<link href="./favicon-32x32.png" rel="icon" sizes="32x32" type="image/png" />
<link href="./favicon-96x96.png" rel="icon" sizes="96x96" type="image/png" />
<link href="./favicon-16x16.png" rel="icon" sizes="16x16" type="image/png" />
<link href="./manifest.json" rel="manifest" />
<link color="#3a4e54" href="./safari-pinned-tab.svg" rel="mask-icon" />
<title>MinIO Console</title>
<script defer="defer" src="./static/js/main.eec275cb.js"></script>
<link href="./static/css/main.90d417ae.css" rel="stylesheet">
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root">
<div id="preload">
<img src="./images/background.svg" />
<img src="./images/background-wave-orig2.svg" />
</div>
<div id="loader-block">
<img src="./Loader.svg" />
</div>
</div>
</body>
</html>
%
I am trying to redirect a example.com/minio
location to minio console, which is run behind a nginx proxy both run by a docker compose file. My problem is that, when I'm trying to reverse proxy the minio endpoint to a path, like /minio
it does not work, but when I run the minio
reverse proxy on root path in the nginx reverse proxy, it works. I seriously cannot findout what the problem might be.
This is my compose file:
services:
nginx:
container_name: nginx
image: nginx
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./log/nginx:/var/log/nginx/
minio:
image: minio/minio
container_name: minio
volumes:
- ./data/minio/:/data
command: server /data --address ':9000' --console-address ':9001'
environment:
MINIO_ROOT_USER: minio_admin
MINIO_ROOT_PASSWORD: minio_123456
ports:
- 9000
- 9001
restart: always
logging:
driver: "json-file"
options:
max-file: "10"
max-size: 20m
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
My nginx configuration is like this:
server {
listen 80;
server_name example.com;
# To allow special characters in headers
ignore_invalid_headers off;
# 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;
# To disable buffering
proxy_buffering off;
access_log /var/log/nginx/service-access.log;
error_log /var/log/nginx/service-error.log debug;
location / {
return 200 "salam";
default_type text/plain;
}
location /minio {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://minio:9001;
}
}
The picture I'm seeing of minio console at the domain is this:
And the response of curling the endpoint ($ curl -k http://example.com/minio
):
<null>
<html lang="en">
<head>
<meta charset="utf-8" />
<base href="/" />
<meta content="width=device-width,initial-scale=1" name="viewport" />
<meta content="#081C42" media="(prefers-color-scheme: light)" name="theme-color" />
<meta content="#081C42" media="(prefers-color-scheme: dark)" name="theme-color" />
<meta content="MinIO Console" name="description" />
<link href="./styles/root-styles.css" rel="stylesheet" />
<link href="./apple-icon-180x180.png" rel="apple-touch-icon" sizes="180x180" />
<link href="./favicon-32x32.png" rel="icon" sizes="32x32" type="image/png" />
<link href="./favicon-96x96.png" rel="icon" sizes="96x96" type="image/png" />
<link href="./favicon-16x16.png" rel="icon" sizes="16x16" type="image/png" />
<link href="./manifest.json" rel="manifest" />
<link color="#3a4e54" href="./safari-pinned-tab.svg" rel="mask-icon" />
<title>MinIO Console</title>
<script defer="defer" src="./static/js/main.eec275cb.js"></script>
<link href="./static/css/main.90d417ae.css" rel="stylesheet">
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root">
<div id="preload">
<img src="./images/background.svg" />
<img src="./images/background-wave-orig2.svg" />
</div>
<div id="loader-block">
<img src="./Loader.svg" />
</div>
</div>
</body>
</html>
%
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我还为此挣扎了很长时间,终于能够解决它。
据我所知,为我做这项工作的关键更改在哪里:
重写
指令(而不是依靠Nginx Proxy_pass+URI行为,似乎对我不起作用)。解析器
指令较短(以便将服务重新安排到其他节点上)。$上游
以防止DNS缓存。我必须稍微更改您的设置,以便现在在
minio.example.com
后面提供Minio S3 API,而UI Web控制台可以通过minio.example.com/console/访问UI Web控制台。
。我已经在下面编辑了您的配置文件:
docker-compose.yml :
nginx.conf :
hth!
I also struggled with this for a long time and was finally able to resolve it.
As far as I can tell, the key changes to make this work for me where:
rewrite
directive (instead of relying on the Nginx proxy_pass+URI behaviour which didn't seem to work for me).resolver
directive with short timeouts (so that rescheduling of services onto other nodes gets resolved).$upstream
to prevent DNS caching.I had to change your setup a little bit so that now the Minio S3 API is served behind
minio.example.com
while the UI Web Console is accessible atminio.example.com/console/
.I have edited your config files below:
docker-compose.yml:
nginx.conf:
HTH!
Minio在不默认路径(例如位置 /Minio)中无法使用
您需要使用
地点 / {
...
proxy_pass http:// localhost:9001;
}
或使用这样的子域中将另一个服务器块添加到nginx
minio doesn't work under non default path like location /minio
You need to use
location / {
....
proxy_pass http://localhost:9001;
}
or add another server block to nginx with subdomain like this
确保您已使用浏览器重定向URL配置了Minio服务器,以反映您的子路径。
可以将其设置为环境变量,例如
参考: https ://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html

Ensure you have configured minio server with the browser redirect url to reflect your sub path.
This can be set as environment variable like
Ref :https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html

我今天面临同样的麻烦。
代理存储桶很容易:
但是要访问Web控制台,我们需要使用ReTriting
基本HREF
的应用程序使用某些技巧。幸运的是,基本HREF
位于&lt; head&gt;
标签中,我们可以轻松地重写它:btw,如果我们不是重写
base href
,我们,我们将有空白页,网络访问中有很多404个错误,如希望,这为别人解决了很多时间!
i facing same trouble today.
Proxy for buckets is easy:
but to access Web Console we need to use some trick with rewriting
base href
of application. Fortunately,Base href
located in<head>
tag and we can easily rewrite it:Btw, if we are not rewrite
base href
, we will got blank page, a lot of 404 errors in web-console and message likeHope, this is solve a lot of time for someone else!
当
minio ui
加载时,它使用root路径来加载静态和JS文件,您需要将它们添加到nginx配置中:因此,如果要修复WebSocket essock exudy和API调用错误,则需要添加这些配置:
when
Minio UI
loads, it uses root path to load static and js files you need to add these to your nginx configs:therefore if you want to fix websocket issue and API calls error you need to add these configs :
https> https:// github。 com/arschles/minio-howto/blob/master/setup-nginx-proxy-with-minio-server.md
如果您使用nginx docker容器,请将此文件添加到/etc/nginx/conf.d and Conconf.d和在同一目录中删除现有的default.conf文件。
https://github.com/arschles/minio-howto/blob/master/setup-Nginx-proxy-with-Minio-Server.md
if you use a nginx docker container, add this file to /etc/nginx/conf.d and remove the existing default.conf file in same directory.