自建對(duì)象存儲(chǔ)服務(wù)MINIO在使用NGINX進(jìn)行反向代理時(shí)出現(xiàn)對(duì)象無(wú)法正常共享的解決辦法

什么是MINIO

Minio是在A(yíng)pache License v2.0下發(fā)布的對(duì)象存儲(chǔ)服務(wù)器。它與Amazon S3云存儲(chǔ)服務(wù)兼容。它最適合存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),如照片,視頻,日志文件,備份和容器/VM鏡像等。對(duì)象的大小可以從幾KB到最大5TB。

DOCKER 安裝示例

docker run-p9000:9000--name minio1-e"MINIO_ACCESS_KEY=自己的access_key,相當(dāng)于用戶(hù)名"-e"MINIO_SECRET_KEY=自己的secret_key,相當(dāng)于密碼"-v/mnt/minio-data-v1:/data-v/mnt/minio-v1:/root/.minio-dminio/minio:RELEASE.2018-07-31T02-11-47Z server /data

1

使用NGINX進(jìn)行反向代理

因?yàn)榉?wù)器有其他服務(wù),并且使用的nginx作為反向代理,初始配置如下:

在/etc/nginx/conf.d下新建文件minio.conf

server{? ? listen80;? ? gzip on;? ? server_name oss.allocmem.com;? ? location / {? ? ? proxy_pass http://127.0.0.1:9000;}}

1

2

3

4

5

6

7

8

9

nginx -s relaod讓nginx重新加載

出現(xiàn)問(wèn)題

在使用上面配置的用戶(hù)名和密碼進(jìn)入主頁(yè)后,上傳了自己的文件,當(dāng)點(diǎn)擊生成共享連接的時(shí)候,如下圖:

訪(fǎng)問(wèn)這個(gè)共享連接會(huì)報(bào)錯(cuò)SignatureDoesNotMatch:

原因及解決方案

錯(cuò)誤提示SignatureDoesNotMatch簽名不正確,后來(lái)發(fā)現(xiàn)和nginx反向代理在做轉(zhuǎn)發(fā)的時(shí)候所攜帶的header有關(guān)系.minio在校驗(yàn)signature是否有效的時(shí)候,必須從http header里面獲取host,而我們這里沒(méi)有對(duì)header作必要的處理.如果源請(qǐng)求未攜帶這個(gè)頭,則minio處無(wú)法獲取請(qǐng)求頭中的host,目前我這里測(cè)試看請(qǐng)求有攜帶Host,這里的機(jī)制問(wèn)題出在nginx,nginx沒(méi)有把這個(gè)host轉(zhuǎn)發(fā)過(guò)去,而用ip的時(shí)候Host為 ip:port,這種情況是正常的,這應(yīng)該和nginx的默認(rèn)配置proxy_set_header Host $http_host有關(guān)系

如果不想改變請(qǐng)求頭“Host”的值,可以這樣來(lái)設(shè)置:

proxy_set_header Host?httphost;但是,如果客戶(hù)端請(qǐng)求頭中沒(méi)有攜帶這個(gè)頭部,那么傳遞到后端服務(wù)器的請(qǐng)求也不含這個(gè)頭部。這種情況下,更好的方式是使用httphost;但是,如果客戶(hù)端請(qǐng)求頭中沒(méi)有攜帶這個(gè)頭部,那么傳遞到后端服務(wù)器的請(qǐng)求也不含這個(gè)頭部。這種情況下,更好的方式是使用host變量——它的值在請(qǐng)求包含“Host”請(qǐng)求頭時(shí)為“Host”字段的值,在請(qǐng)求未攜帶“Host”請(qǐng)求頭時(shí)為虛擬主機(jī)的主域名:

我們這里的minio.conf需要添加下面代碼

proxy_set_header Host$host;

1

$host代表的是當(dāng)前虛擬主機(jī)的host,即上面配置的oss.allcmem.com.完整示例如下:

server{listen80;gzipon;server_nameoss.allocmem.com;location/ {proxy_passhttp://127.0.0.1:9000;proxy_set_headerHost$host;? ? }}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容