Puncte:0

Eroare Nginx, Docker, Prerender.io ânu a putut fi rezolvată (110: Operațiunea a expirat)â

drapel tr

De fapt, lucrez într-o companie și pentru a îmbunătăți SEO, încerc să configurez aplicația noastră web unghiulară (10) cu prerender.io pentru a trimite html redat crawlerelor care vizitează site-ul nostru.

Aplicația este dockerizată și expusă folosind un server nginx.Pentru a evita conflictul cu conf nginx existent (după ce puțini au încercat să-l folosească), am (re)pornit configurația din fișierul .conf furnizat în documentația prerender.io (https://gist.github.com/thoop/8165802), dar este imposibil pentru mine să obțin vreun răspuns de la serviciul de prerendare.

Mă confrunt mereu cu: „502: Gateway greșit” (partea client) și „nu a putut fi rezolvat (110: Operație expirată)” (partea server) când trimit o solicitare cu Googlebot ca agent de utilizator.

După construirea și rularea imaginii mele docker, site-ul web este expus corect pe portul 80. Este complet accesibil atunci când folosesc un browser web, dar eroarea apare când încerc o solicitare ca bot (folosind curl -A Googlebot http:// localhost:80).

Pentru a verifica dacă serviciul de prerendare primește corect cererea mea atunci când a fost nevoie, am încercat să folosesc o adresă URL generată pe pipedream.com, dar cererea nu vine niciodată.

Am încercat să folosesc soluții diferite (8.8.8.8 și 1.1.1.1), dar nimic nu s-a schimbat.

Am încercat să măresc resolver_timeout pentru a lăsa mai mult timp, dar tot aceeași eroare.

Am încercat să instalez curl în container deoarece imaginea mea se bazează pe o imagine alpină, curl a fost instalat cu succes, dar nu s-a schimbat nimic.

Iată fișierul meu de configurare nginx:

Server {
    asculta 80 default_server;
    root /usr/share/nginx/html;
 
    index index.html;

    Locație / {
        try_files $uri @prerender;
    }
 
    locație @prerender {
        proxy_set_header X-Prerender-Token TOKEN_HERE;
        
        setați $prender 0;
        if ($http_user_agent ~* "googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3Chare_"Validator|W3Capp_" ) {
            setați $prerender 1;
        }
        if ($args ~ "_fragment_escaped_") {
            setați $prerender 1;
        }
        if ($http_user_agent ~ "Prerander") {
            setați $prender 0;
        }
        if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi| ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)") {
            setați $prender 0;
        }
        
        #resolve folosind serverul DNS Google pentru a forța rezoluția DNS și pentru a preveni memorarea în cache a IP-urilor
        rezolutor 8.8.8.8;
        resolver_timeout 60s;
 
        dacă ($prerander = 1) {
            
            #setarea prerandării ca variabilă forțează rezoluția DNS, deoarece nginx memorează IP-urile în cache și nu joacă bine cu echilibrarea încărcăturii
            setați $prerender "service.prerender.io";
            rescrie .* /$scheme://$host$request_uri? pauză;
            proxy_pass http://$prerender;
        }
        dacă ($prerander = 0) {
            rescrie .* /index.html pauză;
        }
    }
}

Și iată fișierul meu Docker:

FROM node: 12.7-alpine AS build
Mediu ARG=producție

WORKDIR /usr/src/app
COPIEAZĂ package.json package-lock.json ./
RUN instalarea npm
COPIE . .
RUN npm run build -- --configuration $environment
# Construire în două etape pentru că nu avem nevoie de lucruri legate de noduri
DIN nginx:1.17.1-alpin

RUN apk add --no-cache curl
COPIEAZĂ --from=build /usr/src/app/dist/app /usr/share/nginx/html
COPIEAZĂ prerender-nginx.conf /etc/nginx/conf.d/default.conf

EXPUNEREA 80

In speranta ca ma puteti ajuta :)

djdomi avatar
drapel za
Ca o presupunere, dar de ce să nu găzduiți propriul dvs. resolver, deoarece cele mai multe solicitări vor fi aceleași și va reduce timpul?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.