Quando um cliente solicita um objeto que não existe no OSS, o OSS busca automaticamente o objeto no servidor de origem especificado, retorna-o ao cliente e o armazena no seu bucket.
Como funciona
O recurso de retorno à origem por espelhamento funciona como um proxy no lado do servidor. Quando um cliente envia uma solicitação GET para um objeto que não existe em um bucket do OSS, o OSS verifica se a solicitação aciona uma regra de retorno à origem (por exemplo, correspondendo a um prefixo de nome de objeto e retornando um erro HTTP 404). Se uma regra for acionada, o OSS envia uma solicitação HTTP ao servidor de origem especificado para buscar o objeto. Se o servidor de origem retornar um código de status 200 OK, o OSS retorna o objeto ao cliente e, simultaneamente, o armazena no bucket. Se o servidor de origem retornar um código 404 Not Found ou outro código de erro, o OSS retorna o erro correspondente ao cliente. Nesse processo, o OSS atua como proxy, possibilitando a migração de dados sob demanda e o cache de uso único. Observe que, uma vez armazenado no OSS, o objeto não é atualizado automaticamente, mesmo que o objeto de origem no servidor de origem seja alterado.
Buscar objetos ausentes em um site
Este é o cenário mais básico de configuração do retorno à origem por espelhamento. Quando um cliente solicita um objeto que não existe no OSS, o OSS o busca automaticamente em um servidor de origem especificado e o armazena no bucket. Este exemplo mostra como configurar uma regra para buscar objetos em https://example.com/ quando o objeto solicitado não é encontrado no diretório examplefolder/ do bucket examplebucket.
Etapa 1: Configurar uma regra de retorno à origem por espelhamento
Acesse a página Buckets e clique no nome do bucket desejado.
No painel de navegação à esquerda, escolha .
Na página Mirroring-based Back-to-origin, clique em Create Rule.
No painel Create Rule, configure os parâmetros. Use os valores padrão para os demais parâmetros.
Parâmetro
Configuração
Method
Selecione Image.
Condition
Selecione Object Name Prefix e insira examplefolder/ na caixa de texto.
Origin URL
Na primeira coluna (Protocol), selecione
https. Na segunda coluna (Domain Name), insiraexample.com. Deixe a terceira coluna (Path Prefix) vazia. O prefixo de caminho é anexado ao nome de domínio para formar o caminho da URL de origem.Clique em OK.
Etapa 2: Verificar a regra
Acesse
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/examplefolder/example.txt.Se o objeto
examplefolder/example.txtnão existir no bucketexamplebucket, o OSS solicitará o objeto emhttps://example.com/examplefolder/example.txt.Após buscar o objeto, o OSS o salva como
examplefolder/example.txtno bucketexamplebuckete o retorna ao cliente.
Substituir diretório e verificar integridade
Em alguns cenários, a estrutura de diretórios no bucket do OSS pode ser diferente da estrutura do servidor de origem. Também pode ser necessário garantir a integridade dos objetos buscados no servidor de origem. Este caso de uso mostra como mapear diretórios e usar a verificação de MD5 para garantir a transferência confiável de dados.
Quando um cliente solicita um objeto que não existe no diretório
examplefolderdo bucketbucket-01na região China (Hangzhou), o OSS busca o objeto no diretóriodestfolderdo sitehttps://example.com.O OSS verifica o hash MD5 do objeto buscado. Objetos com hash MD5 diferente não são salvos no bucket
bucket-01.
Etapa 1: Configurar uma regra de retorno à origem por espelhamento
Acesse a página Buckets e clique no nome do bucket desejado.
No painel de navegação à esquerda, escolha .
Na página Mirroring-based Back-to-origin, clique em Create Rule.
No painel Create Rule, configure os parâmetros necessários conforme descrito na tabela a seguir. Use os valores padrão para os demais parâmetros.
Parâmetro
Configuração
Method
Selecione Image.
Condition
Selecione Object Name Prefix e defina como examplefolder/.
Replace or Delete File Prefix
Selecione Replace or Delete File Prefix e defina como destfolder/.
NotaEsta opção é exibida somente após definir Object Name Prefix para a condição de retorno à origem.
Origin URL
Defina a primeira coluna como https, a segunda coluna como example.com e deixe a terceira coluna vazia.
MD5 Verification
Selecione Perform MD5 verification. Se a resposta à solicitação de retorno à origem contiver o cabeçalho Content-MD5, o OSS verifica se o hash MD5 do objeto buscado corresponde ao valor do cabeçalho Content-MD5.
Se os valores coincidirem, o cliente recebe o objeto e o OSS o salva.
Se os valores não coincidirem, o cliente ainda recebe o objeto, mas o OSS não o salva. Isso ocorre porque o cálculo do hash MD5 requer os dados completos do objeto e, nesse ponto, o objeto já foi transmitido ao cliente.
Clique em OK.
Etapa 2: Verificar a regra
Acesse
https://bucket-01.oss-cn-hangzhou.aliyuncs.com/examplefolder/example.txt.Se o objeto
examplefolder/example.txtnão existir no bucketbucket-01, o OSS solicitará o objeto emhttps://example.com/destfolder/example.txt.Após buscar o objeto, o OSS executa as seguintes operações:
Se a resposta à solicitação de retorno à origem contiver o cabeçalho Content-MD5, o OSS calcula o hash MD5 do objeto buscado e o compara com o valor do cabeçalho Content-MD5. Se os valores coincidirem, o OSS salva o objeto como
examplefolder/example.txtno bucketbucket-01e o retorna ao cliente. Se os valores não coincidirem, o OSS retorna o objeto ao cliente, mas não o salva no bucketbucket-01.Se a resposta à solicitação de retorno à origem não contiver o cabeçalho Content-MD5, o OSS salva o objeto como
examplefolder/example.txtno bucketbucket-01e o retorna ao cliente.
Roteamento de solicitações por diretório
Se o seu negócio envolve vários servidores de origem, você pode rotear solicitações para diferentes servidores com base no caminho do objeto solicitado. Este cenário é útil para consolidar dados de múltiplas fontes ou migrar de uma arquitetura de armazenamento distribuído. Por exemplo, se você tem dois servidores de origem com estruturas de diretórios idênticas, o Servidor de Origem A (https://example.com) e o Servidor de Origem B (https://example.org), e deseja implementar o seguinte comportamento:
Quando um cliente solicita um objeto que não existe no diretório
bucket-02/dir1na região China (Beijing), o OSS busca o objeto no diretórioexample1do sitehttps://example.com.Quando um cliente solicita um objeto que não existe no diretório
bucket-02/dir2, o OSS busca o objeto no diretórioexample2do sitehttps://example.org.Dependendo de o Servidor de Origem A e o Servidor de Origem B terem políticas de redirecionamento configuradas, o OSS decide se deve solicitar o objeto a partir do endereço redirecionado.
Etapa 1: Configurar regras de retorno à origem por espelhamento
Acesse a página Buckets e clique no nome do bucket desejado.
No painel de navegação à esquerda, escolha .
Na página Mirroring-based Back-to-origin, clique em Create Rule.
No painel Create Rule, configure duas regras de retorno à origem por espelhamento conforme descrito abaixo. Use os valores padrão para os demais parâmetros.
Regra 1
Parâmetro
Configuração
Method
Selecione Image.
Condition
Selecione Object Name Prefix e defina como dir1/.
Replace or Delete File Prefix
Selecione Replace or Delete File Prefix e defina como example1/.
NotaEsta opção é exibida somente após definir Object Name Prefix para a condição de retorno à origem.
Origin URL
Defina a primeira coluna como https, a segunda coluna como example.com e deixe a terceira coluna vazia.
3xx Response
Selecione Follow Origin to Redirect Request.
NotaSe Follow Origin to Redirect Request não estiver selecionado, o OSS retorna o endereço de redirecionamento especificado pelo servidor de origem diretamente ao cliente.
Regra 2
Parâmetro
Configuração
Method
Selecione Image.
Condition
Selecione Object Name Prefix e defina como dir2/.
Replace or Delete File Prefix
Selecione Replace or Delete File Prefix e defina como example2/.
NotaEsta opção é exibida somente após definir Object Name Prefix para a condição de retorno à origem.
Origin URL
Defina a primeira coluna como https, a segunda coluna como example.org e deixe a terceira coluna vazia.
3xx Response
Selecione Follow Origin to Redirect Request.
Clique em OK.
Etapa 2: Verificar as regras
Acesse
https://bucket-02.oss-cn-beijing.aliyuncs.com/dir1/example.txt.Se o objeto
example.txtnão existir no diretóriodir1do bucketbucket-02, o OSS enviará uma solicitação para o objeto emhttps://example.com/example1/example.txt.Se o Servidor de Origem A tiver uma regra de redirecionamento para
example1/example.txt, o OSS enviará uma nova solicitação ao endereço redirecionado. Após buscar o objeto, o OSS o salva comodir1/example.txtno bucketbucket-02e o retorna ao cliente.Se o Servidor de Origem A não tiver uma regra de redirecionamento para
example1/example.txt, o OSS busca o objeto, o salva comodir1/example.txtno bucketbucket-02e o retorna ao cliente.
Se um cliente solicitar
https://bucket-02.oss-cn-beijing.aliyuncs.com/dir2/example.txt, o objeto buscado por meio da regra de retorno à origem por espelhamento será armazenado comodir2/example.txtno bucketbucket-02.
Buscar em um bucket privado e encaminhar parâmetros
Quando o servidor de origem é um bucket privado do OSS, é necessário configurar as permissões de acesso adequadas. Também pode ser necessário encaminhar parâmetros específicos da solicitação do cliente ao servidor de origem. Este caso de uso mostra como configurar o retorno à origem para um bucket privado do OSS e encaminhar parâmetros. Por exemplo, se você tem dois buckets na região China (Shanghai): bucket-03 (public-read) e bucket-04 (private), e deseja implementar o seguinte comportamento:
Quando um cliente solicita um objeto que não existe no diretório
examplefolderdo bucketbucket-03, o OSS busca o objeto no diretórioexamplefolderdo bucketbucket-04.O OSS transmite a query string da URL de solicitação ao servidor de origem.
O OSS transmite os cabeçalhos HTTP
header1,header2eheader3da solicitação ao servidor de origem.
Etapa 1: Configurar uma regra de retorno à origem por espelhamento
Acesse a página Buckets e clique no nome do bucket desejado.
No painel de navegação à esquerda, escolha .
Na página Mirroring-based Back-to-origin, clique em Create Rule.
No painel Create Rule, configure os parâmetros necessários conforme descrito na tabela a seguir. Use os valores padrão para os demais parâmetros.
Parâmetro
Configuração
Method
Selecione Image.
Condition
Selecione Object Name Prefix e defina como examplefolder/.
Origin Type
Selecione Back-to-origin to Private OSS Bucket e, em seguida, selecione
bucket-04na lista suspensa Source Bucket.Após configurar esta opção, quando um cliente solicitar um objeto que não existe, o OSS usa a função padrão
AliyunOSSMirrorDefaultRolepara buscar os dados do bucket de origem privado especificado. Isso requer a permissãoAliyunOSSReadOnlyAccess, que garante que o OSS só possa acessar os dados de origem no modo de leitura, sem poder modificá-los ou excluí-los.Para configurar o retorno à origem por espelhamento para um bucket privado do OSS, o usuário RAM deve ter a permissão
ram:GetRole. Essa permissão é usada para verificar se a funçãoAliyunOSSMirrorDefaultRoleexiste.Se a função existir, ela será usada diretamente.
Se a função não existir, recomendamos usar a conta principal do Alibaba Cloud associada ao usuário RAM para criar a função
AliyunOSSMirrorDefaultRolecom antecedência e conceder a ela a permissãoAliyunOSSReadOnlyAccess. Essa prática evita conceder permissões de alto risco, como criar funções (ram:CreateRole) e anexar políticas a funções (ram:AttachPolicyToRole), ao usuário RAM. Após a autorização da função, o usuário RAM pode reutilizar a função existente, o que reduz os riscos de configuração de permissões.
Origin URL
Defina a primeira coluna como https e deixe os demais campos vazios.
Origin Parameter
Selecione Transfer with Query String.
O OSS transmite a query string da URL de solicitação ao servidor de origem.
Set Transmission Rule of HTTP Header
Selecione Transmit Specific HTTP Headers e adicione os cabeçalhos HTTP
header1,header2eheader3. As regras de retorno à origem não suportam o encaminhamento de certos cabeçalhos HTTP padrão, comoauthorization,authorization2,range,content-lengthedate, ou quaisquer cabeçalhos que comecem comx-oss-,oss-oux-drs-.ImportanteAo buscar em um bucket privado, não selecione a opção para encaminhar todos os cabeçalhos HTTP. Isso causa falha na busca de retorno à origem.
Clique em OK.
Etapa 2: Verificar a regra
Acesse
https://bucket-03.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss.Se o objeto
examplefolder/example.pngnão existir no bucketbucket-03, o OSS enviará uma solicitação para o objeto emhttps://bucket-04.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss.O bucket
bucket-04retorna o objetoexample.pngao OSS com base nos parâmetros encaminhados?caller=lucas&production=oss.O OSS salva o objeto buscado como
examplefolder/example.pngno bucketbucket-03.
Se a solicitação também contiver os cabeçalhos HTTP header1, header2 e header3, o OSS também os transmitirá ao bucket bucket-04.
Casos de uso em produção
Migração de dados sem interrupção
Para mais informações sobre a solução de migração, consulte Migre serviços para o Alibaba Cloud OSS sem interrupção usando o retorno à origem por espelhamento.
Atualizar objetos em cache
O retorno à origem por espelhamento é um mecanismo de cache de uso único. Se um objeto no servidor de origem for atualizado, o OSS não o atualiza nem o busca novamente de forma automática. Você pode usar os seguintes métodos para atualizar manualmente os objetos em cache.
Exclusão manual: exclua o objeto do bucket do OSS usando o console ou uma API. Na próxima vez que o objeto for acessado, a regra de retorno à origem será acionada novamente.
Regras de ciclo de vida: configure uma política de expiração para os objetos espelhados. Eles serão excluídos automaticamente após um período especificado, possibilitando atualizações periódicas.
Versionamento de nomes de objetos: ao atualizar um objeto no servidor de origem, use um novo nome (por exemplo,
style.v2.css). Esta é a abordagem recomendada para evitar problemas de cache.
Prevenção de riscos e tolerância a falhas
Carga do servidor de origem: garanta que o servidor de origem tenha largura de banda e capacidade de processamento suficientes para lidar com as solicitações de retorno à origem. Recomendamos monitorar a carga do servidor de origem e considerar o pré-aquecimento dos dados em horários de baixa demanda.
Controle de custos: para evitar custos inesperados, recomendamos configurar alertas de custo no Console de Gerenciamento do Alibaba Cloud para monitorar o volume de solicitações de retorno à origem.
Configuração de segurança: garanta que o servidor de origem esteja acessível ao OSS. Se a URL de origem usar o protocolo HTTPS, certifique-se de que o certificado do servidor de origem foi emitido por uma Autoridade Certificadora (CA) confiável, o nome de domínio corresponde e o certificado não expirou.
Consulta de logs: use o recurso de consulta de logs em tempo real para visualizar os logs relacionados ao retorno à origem. O User-Agent das solicitações de retorno à origem contém a string
aliyun-oss-mirror.
Cotas e limites
Quantidade e ordem das regras: é possível configurar até 20 regras de retorno à origem para cada bucket. As regras são correspondidas em ordem crescente de seu RuleNumber. Uma vez correspondida uma regra, ela é executada e as regras subsequentes não são verificadas. É possível ajustar a prioridade de correspondência usando as opções Up ou Down ao lado de uma regra.
QPS e largura de banda:
Regiões na parte continental da China: o QPS total padrão é de 2.000 e a largura de banda total é de 2 Gbit/s.
Regiões fora da parte continental da China: o QPS total padrão é de 1.000 e a largura de banda total é de 1 Gbit/s.
Este limite se aplica à capacidade total de retorno à origem por espelhamento de todos os buckets pertencentes a uma única conta do Alibaba Cloud na região correspondente. As solicitações que excederem esse limite serão limitadas e um erro 503 será retornado. Para solicitar uma cota maior, entre em contato com a Technical Support.
Endereço do servidor de origem: o endereço deve ser um nome de domínio ou endereço IP publicamente acessível que esteja em conformidade com os padrões de codificação RFC 3986. Endereços de rede interna não são suportados.
Tempo limite: o tempo limite padrão para o retorno à origem por espelhamento é de 10 segundos.
Retorno à origem fragmentado: se o servidor de origem suportar solicitações de intervalo e você precisar do recurso de retorno à origem fragmentado, entre em contato com a Technical Support.
FAQ
Tamanho do objeto espelhado difere da origem
Se você encontrar uma discrepância de tamanho entre o objeto espelhado e o objeto de origem, siga estas etapas para investigar.
Verifique os timestamps
Last-Modifieddo objeto espelhado e do objeto de origem.import oss2 import requests from datetime import datetime from oss2.credentials import EnvironmentVariableCredentialsProvider # Obtain credentials from environment variables. Before running this code, # make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Specify the endpoint for the region where your bucket is located. # For example, for China (Hangzhou), the endpoint is https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Specify the region corresponding to the endpoint, e.g., cn-hangzhou. # This parameter is required for V4 signatures. region = "cn-hangzhou" # Replace "yourBucketName" with the name of the bucket where you configured the rule. bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region) # Specify the full path of the mirrored object. object_key = 'yourObjectKey' # Specify the full path of the source object. source_url = 'yourSourceUrl' # Get the Last-Modified timestamp of the mirrored object. oss_object_info = bucket.get_object_meta(object_key) oss_last_modified = oss_object_info.headers['last-modified'] print(f"OSS Last-Modified: {oss_last_modified}") # Get the Last-Modified timestamp of the source object. response = requests.head(source_url) source_last_modified = response.headers.get('last-modified') print(f"Source Last-Modified: {source_last_modified}") # Convert the timestamp strings to datetime objects for comparison. oss_time = datetime.strptime(oss_last_modified, '%a, %d %b %Y %H:%M:%S %Z') source_time = datetime.strptime(source_last_modified, '%a, %d %b %Y %H:%M:%S %Z') if oss_time < source_time: print("The source object has been updated.") elif oss_time > source_time: print("The mirrored object is newer.") else: print("The timestamps of the two objects are identical.")Se o timestamp
Last-Modifieddo arquivo de origem for maior que o timestampLast-Modifieddo arquivo espelhado, isso indica que o arquivo de origem pode ter sido atualizado após a geração do arquivo espelhado.NotaQuando o OSS busca um objeto de um servidor de origem e o grava em um bucket, ele não preserva o timestamp
Last-Modifieddo objeto de origem. Em vez disso, o OSS define o timestampLast-Modifieddo objeto espelhado como o momento em que ele foi criado ou atualizado no OSS.Se o timestamp
Last-Modifieddo arquivo de origem for ≤ o timestampLast-Modifieddo arquivo de retorno à origem por espelhamento, isso indica que o arquivo de origem não foi atualizado desde que o arquivo de retorno à origem foi gerado. A próxima etapa é verificar os valores de checksum MD5 ou CRC64 de ambos os arquivos.
Compare os checksums MD5 ou CRC64 do objeto espelhado e do objeto de origem.
# -*- coding: utf-8 -*- import oss2 import hashlib import requests # For CRC64 comparison, the Python standard library does not support CRC64. # You can use a third-party library like crcmod. # Install crcmod: pip install crcmod import crcmod from oss2.credentials import EnvironmentVariableCredentialsProvider # Obtain credentials from environment variables. Before running this code, # make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Specify the endpoint for the region where your bucket is located. # For example, for China (Hangzhou), the endpoint is https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Specify the region corresponding to the endpoint, e.g., cn-hangzhou. # This parameter is required for V4 signatures. region = "cn-hangzhou" # Replace "yourBucketName" with the name of the bucket where you configured the rule. bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region) # Specify the full path of the mirrored object. object_key = 'yourObjectKey' # Specify the full path of the source object. source_url = 'yourSourceUrl' # Get the metadata of the mirrored object. oss_object_info = bucket.get_object_meta(object_key) oss_md5 = oss_object_info.headers.get('etag', '').strip('"') # ETag is usually the MD5 hash oss_crc64 = oss_object_info.headers.get('x-oss-hash-crc64ecma', '') print(f"OSS MD5: {oss_md5}") print(f"OSS CRC64: {oss_crc64}") # Get the content of the source object and calculate its MD5 and CRC64. response = requests.get(source_url) if response.status_code == 200: source_content = response.content source_md5 = hashlib.md5(source_content).hexdigest() print(f"Source MD5: {source_md5}") crc64_func = crcmod.predefined.mkCrcFun('crc-64') source_crc64 = hex(crc64_func(source_content))[2:].upper().zfill(16) # Convert to hex string and format print(f"Source CRC64: {source_crc64}") # Compare the MD5 values. if oss_md5 == source_md5: print("MD5 checksums are identical.") else: print("MD5 checksums do not match.") # Compare the CRC64 values. if oss_crc64.upper() == source_crc64: print("CRC64 checksums are identical.") else: print("CRC64 checksums do not match.") else: print(f"Failed to fetch source file. HTTP Status Code: {response.status_code}")Se os checksums MD5 ou CRC64 forem idênticos, o conteúdo dos dois objetos é o mesmo. Nesse caso, seus tamanhos também devem ser idênticos.
Se os checksums MD5 ou CRC64 não coincidirem, o conteúdo dos dois objetos é diferente. Prossiga para a próxima etapa para verificar cabeçalhos de solicitação especiais.
Verifique se há cabeçalhos de solicitação especiais.
root@qa ~ # ossutil stat oss://xxx ACL : default Accept-Ranges : bytes Content-Encoding : gzip Content-Length : 1051 Content-Md5 : ZMRnM8Rycyel Content-Type : text/plain Etag : "64C46733C4xxx" Last-Modified : 2025-01-26 13:32:49 +0800 CST Owner : xxx Vary : Origin X-Oss-Expiration : expiry-date="Mon, 27 Jan 2025 00:00:00 GMT", rule-id="004xxx" X-Oss-Hash-Crc64ecma : 4241986122514178170 X-Oss-Object-Type : Normal X-Oss-Storage-Class : Standard X-Oss-Version-Id : CAEQORiBgIDmrLKEpRxxx 0.092282(s) elapsed root@qa ~ # ossutil stat xxx ACL : public-read Accept-Ranges : bytes Content-Length : 1048576 Content-Md5 : ttgBkgMcfgU Content-Type : text/plain Etag : "B6D818360A56xxx" Last-Modified : 2024-05-29 13:06:16 +0800 CST Owner : xxx Vary : Accept-Encoding X-Oss-Expiration : expiry-date="Thu, 30 May 2024 00:00:00 GMT", rule-id="60fxxx" X-Oss-Hash-Crc64ecma : 6947790692288575170 X-Oss-Object-Type : Normal X-Oss-Server-Side-Encryption : KMS X-Oss-Server-Side-Encryption-Key-Id: xxx X-Oss-Storage-Class : Standard X-Oss-Version-Id : CAEQMRiBgIDnSvuK_hgiIDRlNG 0.120707(s) elapsedVerifique se a solicitação de retorno à origem contém cabeçalhos de solicitação HTTP especiais, como
Accept-Encoding: gzip, deflate, br. Esse cabeçalho indica que o cliente pode aceitar dados compactados.Se a solicitação de retorno à origem usar compactação HTTP e o objeto solicitado atender aos critérios de compactação, os tamanhos dos dois objetos serão diferentes.
Se o cabeçalho
Accept-Encodingestiver presente, não o encaminhe.Se você configurou a regra para encaminhar todos os cabeçalhos HTTP, adicione
accept-encodingà lista de cabeçalhos proibidos.Se você configurou a regra para encaminhar cabeçalhos HTTP específicos, certifique-se de que
accept-encodingnão esteja incluído na lista de cabeçalhos especificados.Selecione Transmit Specific HTTP Headers e adicione
content-typeno campo de entrada do parâmetro.
Solucionar falhas de retorno à origem
Se você encontrar uma falha na busca de origem (como um erro 424 MirrorFailed), siga as etapas abaixo para solucionar o problema.
Verifique a acessibilidade do servidor de origem.
# Replace the URL with your actual origin server address and file path curl -I "https://www.example.com/images/test.jpg"Verifique a resolução de DNS.
# Replace the domain name with your actual origin domain name nslookup www.example.comVerifique o certificado HTTPS (se o servidor de origem usar HTTPS).
# Replace the domain name with your actual origin domain name openssl s_client -connect www.example.com:443 -servername www.example.comAnalise o problema usando o recurso de consulta de logs em tempo real do OSS.
Nenhum objeto espelhado criado
Uma solicitação HEAD do cliente recupera apenas os metadados do objeto, como tamanho e tipo, sem baixar o conteúdo. Portanto, as solicitações HEAD não acionam as regras de retorno à origem por espelhamento para buscar um objeto no servidor de origem e gravá-lo no bucket do OSS.
Código de status inesperado do retorno à origem
Quando uma solicitação aciona o retorno à origem por espelhamento e o servidor de origem retorna um código de status diferente de 404, 200 ou 206, analise a resposta do servidor de origem.
Origem é OSS: verifique os seguintes itens de configuração.
Proibir o encaminhamento de cabeçalhos HTTP específicos: proíba o encaminhamento do cabeçalho host para evitar a exposição de informações do servidor de origem e garantir que as solicitações de retorno à origem sejam processadas conforme esperado. Se você não proibir o encaminhamento do cabeçalho host, a solicitação de retorno à origem transmitirá o valor de host do bucket de destino ao servidor de origem. Como o valor de host de cada bucket é exclusivo, se o host solicitado não corresponder ao host real da origem, o servidor de origem retornará um erro 403. O OSS então retornará um erro 424 ao cliente.
Retorno à origem para um bucket privado do OSS: se as permissões não estiverem configuradas, verifique se o ACL do bucket de destino e de seus objetos está definido como public-read. Se as permissões estiverem configuradas, verifique se a política de autorização de função para o retorno à origem por espelhamento foi alterada, resultando em permissões insuficientes. A função padrão para o retorno à origem por espelhamento é
AliyunOSSMirrorDefaultRole, e sua política de sistema padrão éAliyunOSSReadOnlyAccess.
Origem não é OSS: analise os logs do lado do servidor e verifique as configurações de Server Name Indication (SNI), parâmetros de retorno à origem e encaminhamento de cabeçalhos para identificar a causa específica do erro do servidor de origem. O servidor de origem pode retornar códigos de status como 401 (Unauthorized), 403 (Forbidden) ou um 5xx (Server Internal Error).
Ordem de correspondência das regras de retorno à origem
As regras são correspondidas com base no número da regra (RuleNumber) em ordem crescente. Após a primeira regra que atenda às condições ser correspondida, essa regra é executada imediatamente e nenhuma regra subsequente é verificada.
Buscar em uma VPC ou IP interno
Não. O servidor de origem deve ter um endereço publicamente acessível. Para acessar um serviço em uma VPC, exponha-o à internet pública usando um NAT Gateway ou uma instância SLB voltada para a internet.
Objeto OSS não atualizado após atualização da origem
O retorno à origem por espelhamento é um mecanismo de busca de uso único e não sincroniza automaticamente as atualizações do servidor de origem. Para buscar um objeto atualizado, exclua manualmente o objeto espelhado do OSS ou use uma estratégia de versionamento de nomes de objetos.