NGINX - Enviar solicitação para back-end se a solicitação vier de um rastreador/bot

NGINX - Enviar solicitação para back-end se a solicitação vier de um rastreador/bot

Eu tenho um aplicativo de página única sem renderização no servidor. Assim, sempre que alguém compartilha uma URL do site no Facebook ou Twitter, o título dinâmico da página não é exibido.

Gostaria de enviar solicitações de rastreador/bot para um back-end especial que exibe uma página com meta tags OpenGraph.

O front-end está hospedado no NGINX e tenho esta configuração até agora:

server {
    listen       80;
    listen  [::]:80;

    location / {
    
        if ($http_user_agent ~* "linkedinbot|googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com") {
            return 307 https://renderer_service_domain$request_uri;
    }

    root   /usr/share/nginx/html;
    index  index.html;
}

Isso funciona, mas a URL do Angular tem o # antes da URL da rota, preciso removê-la antes de enviar a solicitação para o backend especial.

Então, como posso remover o hash do $request_uri ?

Tentei alguns exemplos de reescrita, mas ele envia a solicitação para o mesmo domínio, preciso enviar a solicitação para outro servidor/nome de domínio.

Responder1

O hash #e o conteúdo posterior não são enviados ao servidor HTTP, portanto, não fazem parte da $request_urivariável.

Com sua configuração de exemplo, qual é a solicitação exata que seu back-end recebe?

Não tenho experiência com aplicativos de página única e com o Google, mas não acho que seja uma boa abordagem enviar conteúdo diferente para bots rastreadores e para usuários finais.

informação relacionada