Ao usar o Alibaba Cloud CDN para acelerar ativos estáticos em um bucket do OSS, ativar simultaneamente a hospedagem de site estático e o back-to-origin para buckets privados pode causar um erro de acesso. Este tópico explica como resolver esse problema.
Informações básicas
Hospedagem de site estático do OSS:Hospedagem de site estático.
Back-to-origin para buckets privados do OSS:Back-to-origin para buckets privados.
Problema
Esse problema ocorre quando um bucket do OSS é definido como privado, a hospedagem de site estático está ativada e o back-to-origin para buckets privados está habilitado no Alibaba Cloud CDN.
Quando um usuário acessa
https://example.com/
para visualizar a página inicial padrão
https://example.com/index.html
, o PoP (Point of Presence) do Alibaba Cloud CDN retorna um erro
403 Forbidden
com a mensagem
You don't have permission to access the URL on this server
. As ferramentas de desenvolvedor do navegador exibem o cabeçalho de resposta
x-tengine-error: You are forbidden to list buckets
.
403 Forbidden
You don't have permission to access the URL on this server.
Powered by Tengine
Response Headers
content-type: text/html
date: Sun, 01 Mar 2020 01:31:13 GMT
eagleid: xxx
server: xxx
status: 403
timing-allow-origin: *
via: cache51.l2cn2302[,0], kunlun7.cn250[9,403-1280,M], kunlun2.cn250[12,0]
x-cache: MISS TCP_MISS dirn:-2:-2
x-swift-cachetime: 1
x-swift-error: orig response 4XX error
x-swift-savetime: Sun, 01 Mar 2020 01:31:13 GMT
x-tengine-error: You are forbidden to list buckets
Request Headers
:authority: xxx.xxx.com
Causa
O recurso de back-to-origin para buckets privados do Alibaba Cloud CDN entra em conflito com a configuração de página inicial padrão da hospedagem de site estático do OSS.
Ao configurar a hospedagem de site estático para um bucket do OSS, especifique uma página inicial padrão, como
index.html
. Quando um usuário anônimo acessa o domínio do site, como
https://example.com/
, o OSS fornece automaticamente a página inicial padrão, por exemplo,
https://example.com/index.html
. No entanto, após ativar o back-to-origin para buckets privados no Alibaba Cloud CDN, a solicitação de back-to-origin do CDN para o OSS torna-se uma solicitação autenticada para acessar o diretório raiz. Diferentemente de uma solicitação anônima, o OSS não fornece automaticamente a página inicial padrão. Em vez disso, o OSS interpreta a solicitação como uma tentativa de listar o conteúdo do bucket, ação bloqueada por padrão em buckets privados. Isso causa o erro "You are forbidden to list buckets".
Soluções
Solução 1: Caso não precise da hospedagem de site estático, desative-a para o bucket do OSS. Para obter instruções, consulte Hospedagem de site estático.
-
Solução 2: Se a hospedagem de site estático for necessária, configure uma regra de reescrita de URI no Alibaba Cloud CDN. Essa medida impede que o Alibaba Cloud CDN envie solicitações de back-to-origin direcionadas ao diretório raiz.
Para configurar a regra, defina Path to Be Rewritten como
^/$para corresponder às solicitações do diretório raiz, defina Target Path como/index.htmle defina Flag como Redirect. Após a configuração da regra, quando um cliente solicitarwww.example.com/, o PoP do Alibaba Cloud CDN retornará um redirecionamento 302, instruindo o cliente a solicitarwww.example.com/index.html. Para etapas detalhadas, consulte Reescrever URLs de acesso.