রুবিজেমসের বিপরীতে প্রক্সি সার্ভার হিসাবে বার্নিশ করুন


3

আমি রুবিজেমসের জন্য একটি ক্যাশে সার্ভার সেটআপ করতে চাই, কারণ আমি বর্তমানে ভিয়েতনামে আছি এবং আন্তর্জাতিক ইন্টারনেট সংযোগগুলি বেশ ধীর। আমি বার্নিশের মাধ্যমে এটি করার চেষ্টা করছি, তবে কয়েক ঘন্টা ধরে গুগল করা এবং বিভিন্ন জিনিস চেষ্টা করার পরেও আমি আটকে আছি এবং এটি সঠিকভাবে কাজ করতে পারি না।

আমার লক্ষ্য

আমি একটি রত্ন ইনস্টল করার সময় এটি একটি নমুনা অনুরোধ গ্রুপ:

GET http://api.rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://s3.amazonaws.com/production.s3.rubygems.org/latest_specs.4.8.gz
200 OK

আমি একটি বিপরীত প্রক্সি ক্যাশে সার্ভার সেট আপ করতে চাই (উদাহরণস্বরূপ rubygems.mydomain.com) যেখানে আমি নিম্নলিখিত অনুরোধটি সম্পাদন করতে পারি এবং ক্যাশে সার্ভারটি অভ্যন্তরীণভাবে কোনও পুনঃনির্দেশগুলি অনুসরণ করতে পারে।

rubygems.mydomain.com/latest_specs.4.8.gz

পুনঃনির্দেশের অবস্থানটি বিভিন্ন ডোমেনের সাথে লিঙ্ক করবে (কিছু রুবিজেমস সাবডোমেনস, অ্যামাজন এস 3, রুবিজেমস মিরর)।

বর্তমান অবস্থা

এনজিনেক্সের সাথে ঘোরাফেরা করার পরে, আমি এই ব্লগ পোস্টটি পেয়েছি যা আমি অর্জন করতে চাই তার কাছাকাছি। তবে, ওয়ার্নিশ সঠিকভাবে কাজ করতে এটি কীভাবে কাজ করে সে সম্পর্কে আমার খুব কম জ্ঞান আছে।

এটি আমার বর্তমান কনফিগারেশন ফাইল

import std;

backend rubygems {
    .host = "rubygems.org";
    .port = "80";
}

sub vcl_recv {
    std.syslog(180, "RECV: " + req.http.host + req.url);
    if (!req.url  ~ "^http") {
      std.syslog(180, "FETCH");
      set req.backend = rubygems;
      return (lookup);
    }
}

sub vcl_fetch {
    if (beresp.status == 302) {
        set beresp.http.X-Magic-Redirect = "1";
        return(deliver);
    }
}

sub vcl_hit {
    if (obj.http.X-Magic-Redirect == "1") {
        set req.url = obj.http.Location;
        return (restart);
    }
}

sub vcl_deliver {
    if (resp.http.X-Magic-Redirect == "1") {
        unset resp.http.X-Magic-Redirect;
        return(restart);
    }
    return(deliver);
}

আমি একটি অনুরোধ সম্পাদন করতে পারি, তবে এটি একটি ত্রুটির সাথে সাড়া দেয়:

curl -is http://localhost:8080/latest_specs.4.8.gz
HTTP/1.1 302 Found
Server: Varnish
Content-Type: text/html; charset=utf-8
Retry-After: 5
Content-Length: 376
Accept-Ranges: bytes
Date: Sat, 01 Feb 2014 02:33:47 GMT
X-Varnish: 933109322
Age: 1
Via: 1.1 varnish
Connection: close


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>302 Found</title>
  </head>
  <body>
    <h1>Error 302 Found</h1>
    <p>Found</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 933109322</p>
    <hr>
    <p>Varnish cache server</p>
  </body>
</html>

এবং এটি অনুরোধের জন্য সম্পর্কিত সিস্লগ আউটপুট:

Jan 31 18:33:46 precise64 varnishd[2387]: RECV: localhost:8080/latest_specs.4.8.gz
Jan 31 18:33:46 precise64 varnishd[2387]: FETCH
Jan 31 18:33:47 precise64 varnishd[2387]: RECV: localhost:8080/latest_specs.4.8.gz
Jan 31 18:33:47 precise64 varnishd[2387]: FETCH
Jan 31 18:33:47 precise64 varnishd[2387]: RECV: localhost:8080http://production.s3.rubygems.org/latest_specs.4.8.gz

সুতরাং, রুবিজেমসে অনুরোধটি ঠিকঠাকভাবে কাজ করছে, তবে পুনর্নির্দেশটি অনুসরণ করা প্রত্যাশার মতো কাজ করে না। যদি কেউ আমাকে সঠিক দিকে নির্দেশ করতে পারে তবে আমি খুশি হব।


আমি মনে করি আপনি একবার অনুরোধটি আবার শুরু হয়ে যাওয়ার পরে পর্যাপ্ত ব্যাকএন্ড মিস করছেন। যাইহোক, আপনার পুনরায় পুনঃনির্দেশ অনুসরণ করার সময় rek.http.host এবং req.url অ্যাপোক্রিয়াটিভভাবে পূরণ করতে হবে
এনটিফান

উত্তর:


2

এই মুহুর্তে আপনি যখন আপনার রুবিজেমস ব্যাকএন্ড থেকে 302 স্থিতি পাবেন তখন আপনাকে পুনরায় অনুরোধ করতে হবে প্রতিক্রিয়ার মধ্যে HTTP শিরোনামের অবস্থানের দ্বারা নির্দিষ্ট করে নতুন অবস্থানে

আপনার এমন কিছু দিয়ে শেষ করা উচিত:

vcl_fetch {
   if (beresp.status == 302) {  /* The content is on another location */

      /* First change the host of the request*/
      set req.http.host = regsub(regsub(beresp.http.Location, "^http://", ""), "^([^/]+)/.*$", "\1");

      /* Then change the url of the request */
      set req.url = regsub(beresp.http.Location, "^http://[^/]+/(.*)$", "/\1");
      return (restart);
   }
}

2

আমি যখন রেগে-ক্যাশে-প্রক্সি লেখকের সাথে যোগাযোগ করি , তখন সে প্রতিক্রিয়া জানিয়েছিল:

দুর্ভাগ্যক্রমে আপনার উদ্বেগ সঠিক। আমি দু'বছর আগে এই সংস্থাটি রেখে এসেছি যার জন্য আমি এটি লিখেছিলাম - মানে এটি বজায় রাখার ক্ষেত্রে আমার আগ্রহ মোটামুটি কম। এবং মনে হয় সেখানে অন্য কেউ এটি গ্রহণ করেনি ...


0

যদি আপনি এই কাজটি পেয়ে থাকেন তবে দয়া করে ভাগ করুন।
বিশেষত এটি বান্ডলার নির্ভরতা প্রোটোকলের সাথে কাজ করে কিনা।

এখানে কিছু ভাল তথ্য রয়েছে বিকল্পভাবে, আপনি জেমিনাবক্সে একবার নজর দিতে চাইতে পারেন


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.