我有一个在https://mywebsite.com
上运行的网站。我还在端口9000上运行的同一台服务器上安装了另一个应用程序(Minio)。
注意:通过myServerIP:9000
访问Minio时,它将自动转到myServerIP:9000/minio/
。如果我尚未登录,那么我将被重定向到myServerIP:9000/minio/login
。如果我转到myServerIP:9000/minio/anyRandomPath
,我还将被重定向到登录页面或其他默认页面(如果我已经登录)
现在,我想通过地址https://mywebsite.com/files
访问Minio,因此我如下设置了nginx
location /files/ {
proxy_pass http://127.0.0.1:9000/minio/;
proxy_set_header URI_REQUEST_ORIGIN $request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
}
这不起作用(显示空白页面,标题为“ Minio login”)。当我检查浏览器的控制台时,它说有一条错误消息Uncaught SyntaxError: Unexpected token <
,其中包含指向https://mywebsite.com/minio/index_bundle_xxx.js
的链接。因此,我尝试在我的nginx.conf中添加另一个位置块:
location /minio/ {
proxy_pass http://127.0.0.1:9000/minio/;
proxy_set_header URI_REQUEST_ORIGIN $request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
之后,它会按预期工作。但是问题在于,现在我可以同时通过/minio
和/files
现在如何阻止通过https://mywebsite.com/minio
直接访问Minio?
我尝试了一些解决方法,例如在位置栏下方添加:
location =/minio/ {
return 404;
}
location =/minio/login/ {
return 404;
}
但这显然是一种坏方法,而且效率也不高,因为我可以直接转到mywebsite.com/minio/typeAnythingHere
重定向到登录页面。