Điểm:0

Lỗi Nginx, Docker, Prerender.io âkhông thể giải quyết (110: Operation timed out)â

lá cờ tr

Tôi thực sự đang làm việc trong một công ty và để cải thiện SEO, tôi đang cố gắng thiết lập ứng dụng web góc cạnh (10) của mình với prerender.io để gửi html được hiển thị tới các trình thu thập dữ liệu truy cập trang web của chúng tôi.

Ứng dụng được cập nhật và hiển thị bằng máy chủ nginx.Để tránh xung đột với conf nginx hiện có (sau một vài lần thử sử dụng nó), tôi (đã) bắt đầu lại cấu hình từ tệp .conf được cung cấp trong tài liệu prerender.io (https://gist.github.com/thoop/8165802) nhưng tôi không thể nhận được bất kỳ phản hồi nào từ dịch vụ kết xuất trước.

Tôi luôn phải đối mặt với: "502: Bad Gateway" (phía máy khách) và "không thể giải quyết (110: Thao tác đã hết thời gian chờ)" (phía máy chủ) khi tôi gửi yêu cầu với Googlebot với tư cách là Tác nhân người dùng.

Sau khi xây dựng và chạy hình ảnh docker của tôi, trang web được hiển thị chính xác trên cổng 80. Nó hoàn toàn có thể truy cập được khi tôi sử dụng trình duyệt web, nhưng xảy ra lỗi khi tôi thử yêu cầu dưới dạng bot (sử dụng curl -A Googlebot http:// máy chủ cục bộ:80).

Để xác minh xem dịch vụ kết xuất trước có nhận đúng yêu cầu của tôi khi cần hay không, tôi đã thử sử dụng một url được tạo trên pipedream.com, nhưng yêu cầu không bao giờ đến.

Tôi đã thử sử dụng các trình phân giải khác nhau (8.8.8.8 và 1.1.1.1) nhưng không có gì thay đổi.

Tôi đã cố gắng tăng thời gian giải quyết để có thêm thời gian nhưng vẫn bị lỗi như vậy.

Tôi đã cố gắng cài đặt curl trong vùng chứa vì hình ảnh của tôi dựa trên hình ảnh núi cao, curl đã được cài đặt thành công nhưng không có gì thay đổi.

Đây là tập tin conf nginx của tôi:

người phục vụ {
    nghe 80 default_server;
    gốc /usr/share/nginx/html;
 
    chỉ số index.html;

    địa điểm / {
        try_files $uri @prerender;
    }
 
    địa điểm @prerender {
        proxy_set_header X-Prerender-Token TOKEN_HERE;
        
        đặt $prerender 0;
        if ($http_user_agent ~* "googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp" ) {
            đặt $prerender 1;
        }
        if ($args ~ "_escaped_fragment_") {
            đặt $prerender 1;
        }
        if ($http_user_agent ~ "Hiển thị trước") {
            đặt $prerender 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)") {
            đặt $prerender 0;
        }
        
        #resolve bằng cách sử dụng máy chủ DNS của Google để buộc phân giải DNS và ngăn các IP lưu vào bộ nhớ đệm
        bộ giải quyết 8.8.8.8;
        bộ phân giải_thời gian chờ 60 giây;
 
        nếu ($prerender = 1) {
            
            #setting prerender như một biến buộc phân giải DNS vì nginx lưu trữ IP và không hoạt động tốt với cân bằng tải
            đặt $prerender "service.prerender.io";
            viết lại .* /$scheme://$host$request_uri? nghỉ;
            proxy_pass http://$prerender;
        }
        nếu ($prerender = 0) {
            viết lại .* /index.html ngắt;
        }
    }
}

Và đây là Dockerfile của tôi:

TỪ nút: bản dựng 12.7-alpine AS
Môi trường ARG=sản xuất

WORKDIR /usr/src/ứng dụng
SAO CHÉP gói.json gói-lock.json ./
CHẠY cài đặt npm
SAO CHÉP . .
CHẠY npm run build -- --configuration $environment
# Xây dựng hai giai đoạn vì chúng tôi không cần những thứ liên quan đến nút
TỪ nginx:1.17.1-alpine

RUN apk thêm --no-cache curl
SAO CHÉP --from=build /usr/src/app/dist/app /usr/share/nginx/html
SAO CHÉP prerender-nginx.conf /etc/nginx/conf.d/default.conf

TIẾP XÚC 80

Hy vọng rằng bạn có thể giúp tôi :)

djdomi avatar
lá cờ za
Chỉ là phỏng đoán, nhưng tại sao không lưu trữ trình giải quyết của riêng bạn, vì hầu hết các yêu cầu sẽ giống nhau và nó sẽ giảm thời gian?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.