বার্নিশ "ফ্যাচএরার কোনও ব্যাকএন্ড সংযোগ নেই" ত্রুটি


11

Varnishlog:

    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1340829925 1.0
   12 SessionOpen  c 79.124.74.11 3063 :80
   12 SessionClose c EOF
   12 StatSess     c 79.124.74.11 3063 0 1 0 0 0 0 0 0
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1340829928 1.0
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1340829931 1.0
   12 SessionOpen  c 108.62.115.226 46211 :80
   12 ReqStart     c 108.62.115.226 46211 467185881
   12 RxRequest    c GET
   12 RxURL        c /
   12 RxProtocol   c HTTP/1.0
   12 RxHeader     c User-Agent: Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)
   12 RxHeader     c Host: www.mysite.com
   12 VCL_call     c recv lookup
   12 VCL_call     c hash
   12 Hash         c /
   12 Hash         c www.mysite.com
   12 VCL_return   c hash
   12 VCL_call     c miss fetch
   12 FetchError   c no backend connection
   12 VCL_call     c error deliver
   12 VCL_call     c deliver deliver
   12 TxProtocol   c HTTP/1.1
   12 TxStatus     c 503
   12 TxResponse   c Service Unavailable
   12 TxHeader     c Server: Varnish
   12 TxHeader     c Content-Type: text/html; charset=utf-8
   12 TxHeader     c Retry-After: 5
   12 TxHeader     c Content-Length: 418
   12 TxHeader     c Accept-Ranges: bytes
   12 TxHeader     c Date: Wed, 27 Jun 2012 20:45:31 GMT
   12 TxHeader     c X-Varnish: 467185881
   12 TxHeader     c Age: 1
   12 TxHeader     c Via: 1.1 varnish
   12 TxHeader     c Connection: close
   12 Length       c 418
   12 ReqEnd       c 467185881 1340829931.192433119 1340829931.891024113 0.000051022 0.698516846 0.000074035
   12 SessionClose c error
   12 StatSess     c 108.62.115.226 46211 1 1 1 0 0 0 256 418
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1340829934 1.0
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1340829937 1.0

netstat -tlnp
 Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      3086/nginx      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1915/varnishd   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1279/sshd       
tcp        0      0 127.0.0.2:25            0.0.0.0:*               LISTEN      3195/sendmail: MTA:
tcp        0      0 127.0.0.2:6082          0.0.0.0:*               LISTEN      1914/varnishd   
tcp        0      0 127.0.0.2:9000          0.0.0.0:*               LISTEN      1317/php-fpm.conf)
tcp        0      0 127.0.0.2:3306          0.0.0.0:*               LISTEN      1192/mysqld     
tcp        0      0 127.0.0.2:587           0.0.0.0:*               LISTEN      3195/sendmail: MTA:
tcp        0      0 127.0.0.2:11211         0.0.0.0:*               LISTEN      3072/memcached  
tcp6       0      0 :::8080                 :::*                    LISTEN      3086/nginx      
tcp6       0      0 :::80                   :::*                    LISTEN      1915/varnishd   
tcp6       0      0 :::22                   :::*                    LISTEN      1279/sshd  

জন্য / etc / nginx / সাইট-সক্রিয় / ডিফল্ট

server {
    listen   8080; ## listen for ipv4; this line is default and implied
    listen   [::]:8080 default ipv6only=on; ## listen for ipv6

    root /usr/share/nginx/www;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html
        try_files $uri $uri/ /index.html;
    }

    location /doc {
        root /usr/share;
        autoindex on;
        allow 127.0.0.2;
        deny all;
    }

    location /images {
        root /usr/share;
        autoindex off;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/www;
    #}

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #   proxy_pass http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass 127.0.0.2:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}
}

/etc/nginx/sites-enabled/www.mysite.com.vhost

server {
       listen 8080;
       server_name www.mysite.com mysite.com.net;
       root /var/www/www.mysite.com/web;
       if ($http_host != "www.mysite.com") {
                 rewrite ^ http://www.mysite.com$request_uri permanent;
       }
       index index.php index.html;
       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }
       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }
       location / {
                try_files $uri $uri/ /index.php?$args;
       }
       # Add trailing slash to */wp-admin requests.
       rewrite /wp-admin$ $scheme://$host$uri/ permanent;
       location ~*  \.(jpg|jpeg|png|gif|css|js|ico)$ {
                expires max;
                log_not_found off;
       }
       location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.2:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

include /var/www/www.mysite.com/web/nginx.conf;
       location ~ /nginx.conf {
                deny all;
                access_log off;
                log_not_found off;
       }

}

/etc/varnish/default.vcl

# This is a basic VCL configuration file for varnish.  See the vcl(7)
# man page for details on VCL syntax and semantics.
# 
# Default backend definition.  Set this to point to your content
# server.
# 
backend default {
    .host = "127.0.0.2";
    .port = "8080";
    # .connect_timeout = 600s;
    #.first_byte_timeout = 600s;
    # .between_bytes_timeout = 600s;
    # .max_connections = 800;

দ্রষ্টব্য: ডিফল্টে শেষ চারটি বিকল্পকে সংকোচন করা v


বিড়াল / ইত্যাদি / ডিফল্ট / বার্নিশ

# Configuration file for varnish
#
# /etc/init.d/varnish expects the variables $DAEMON_OPTS, $NFILES and $MEMLOCK
# to be set from this shell script fragment.
#

# Should we start varnishd at boot?  Set to "yes" to enable.
START=yes

# Maximum number of open files (for ulimit -n)
NFILES=131072

# Maximum locked memory size (for ulimit -l)
# Used for locking the shared memory log in memory.  If you increase log size,
# you need to increase this number as well
MEMLOCK=82000

# Default varnish instance name is the local nodename.  Can be overridden with
# the -n switch, to have more instances on a single server.
INSTANCE=$(uname -n)

# This file contains 4 alternatives, please use only one.

## Alternative 1, Minimal configuration, no VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# content server on localhost:8080.  Use a 1GB fixed-size cache file.
#
# DAEMON_OPTS="-a :6081 \
#              -T localhost:6082 \
#        -b localhost:8080 \
#        -u varnish -g varnish \
#            -S /etc/varnish/secret \
#        -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"


## Alternative 2, Configuration with VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# one content server selected by the vcl file, based on the request.  Use a 1GB
# fixed-size cache file.
#
DAEMON_OPTS="-a :80 \
             -T 127.0.0.2:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"

আপনার যদি অন্য কোনও তথ্যের প্রয়োজন হয় তবে আমাকে জানান। সমস্যাটি কী তা নিয়ে আমি সব থেকে বাইরে।


কার্ল শিরোনাম আমাকে এটি দেয়:

curl -v -I -H "Testing: Test header so you see this works" http://www.mysite.com:8080
* About to connect() to www.mysite.com port 8080 (#0)
*   Trying 176.31.158.78... connected
* Connected to www.mysite.com (176.31.158.78) port 8080 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: www.mysite.com:8080
> Accept: */*
> Testing: Test header so you see this works
> 
< HTTP/1.1 301 Moved Permanently
HTTP/1.1 301 Moved Permanently
< Server: nginx/1.0.5
Server: nginx/1.0.5
< Date: Thu, 28 Jun 2012 11:01:23 GMT
Date: Thu, 28 Jun 2012 11:01:23 GMT
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 184
Content-Length: 184
< Connection: keep-alive
Connection: keep-alive
< Location: http://www.mysite.com/
Location: http://www.mysite.com/

< 
* Connection #0 to host www.mysite.com left intact
* Closing connection #0

2
ব্যাকএন্ড পোলিং সক্ষম করার চেষ্টা করুন। বার্নিশ-cache.org/trac/wiki/BackkendPolling আপনি কি আপনার কন্টেন্টটি কার্ল বা উইজেটের সাহায্যে 8080 সরাসরি বন্দরে সরাসরি আঘাত করলে এনগিনেক্স কি আপনার সামগ্রী ফেরত দেয়?
প্যাক্স

শেষবার যখন আমি এটি দেখলাম তখন সমস্যাটি ছিল সেলইনাক্স। একটি পরীক্ষা, এটা বন্ধ করতে চেষ্টা করুন: echo 0 >/selinux/enforce। আপনি যদি নিশ্চিত হন যে এটি সমস্যা, আপনি এটির সাথে একটি ব্যতিক্রম সেট করতে পারেন audit2allow
cyberx86

এনগিনেক্স ত্রুটি_লগে কিছু আছে? 503 ত্রুটি হতে পারে? এবং আপনার mysite.com.vhost এ 5, 6 এবং 7 লাইন মুছে ফেলার চেষ্টা করুন এবং তারপরে আবার অ্যাক্সেস করার চেষ্টা করুন।
স্কামসলে

এটি ফাইলের পরিবর্তে ম্যালোক দিয়ে কাজ করে? আপনার ভিসিএল ফাইলে আপনার সমাধির প্রয়োজন হতে পারে।
গ্রিজলি

আপনার পোস্টটি খুব পুরানো হলেও আমি একটি উত্তর পোস্ট করেছি, কারণ আমার একই ত্রুটি ছিল এবং কিছুক্ষণ আগে অনুসন্ধান করেছি যে এটি www এর www পুনর্নির্দেশের কারণে হয়েছিল
কোজো

উত্তর:


1

স্থানীয়ভাবে বিভিন্ন ব্যাকেন্ডের সাহায্যে বার্নিশ পরীক্ষা করার চেষ্টা করার সময় আমার একই রকম সমস্যা হয়েছিল। দুর্দান্ত 127.0.0.1:8080কাজ করে তবে বন্দরটি পরিবর্তনের জন্য 8081আমাকে 503 দিয়েছে, যদিও ব্যাকএন্ড আমার পক্ষে ভার্নিশের বাইরে পুরোপুরি কাজ করেছিল।

SELinux সংযোগটি না দেওয়ার কারণে সমস্যা দেখা দিয়েছে। আমি অডিট লগটি লেজ করে এবং বার্নিশ থেকে 503 কে উস্কে দিয়ে খুঁজে পেয়েছি:

$ sudo tail -f /var/log/audit/audit.log type=AVC msg=audit(1539253067.438:1379): avc: denied { name_connect } for pid=10154 comm="varnishd" dest=8081 scontext=system_u:system_r:varnishd_t:s0 tcontext=system_u:object_r:transproxy_port_t:s0 tclass=tcp_socket

বার্নিশ থেকে সেলইনাক্স দ্বারা অনুমোদিত বন্দরগুলি দেখতে আপনি এই আদেশটি ব্যবহার করতে পারেন:

$ sudo semanage port -l | grep http_cache_port_t http_cache_port_t tcp 8080, 8118, 8123, 10001-10010

সমস্যাটি সমাধানের জন্য আপনি হয় অন্য একটি বন্দর ব্যবহার করতে পারেন, উদাহরণস্বরূপ 8118বা 8081বার্নিশ থেকে সংযোগের অনুমতি দেওয়ার জন্য সেলইনাক্সকে বলুন।

বন্দর যুক্ত করার আদেশটি হ'ল - পোর্টটি যুক্ত করতে -aপতাকাটি হ'ল:

semanage port -a -t http_cache_port_t -p tcp 8081

আপনি যদি কোনও বার্তা পেয়ে থাকেন যা বলছে যে বন্দরটি ইতিমধ্যে সংজ্ঞায়িত হয়েছে তবে আপনাকে পোর্টটি যুক্ত করার পরিবর্তে পরিবর্তন করতে হবে:

ValueError: Port tcp/8081 already defined

কমান্ডটি -aপতাকা -mপরিবর্তনের জন্য - 'সংশোধন':

semanage port -m -t http_cache_port_t -p tcp 8081


0

আপনি বার্নিশ ব্যবহারকারীর সাথে লগ ইন করার চেষ্টা করতে হবে এবং এনগিনেক্স ব্যাকএন্ডে (127.0.0.2:8080) কার্ল বা উইজেটের সাথে সংযোগটি পরীক্ষা করার জন্য এটি প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করা উচিত।

যেমন সাইবারএক্স ৮ comments মন্তব্যগুলিতে বলেছে, এটি সেলিনাক্স (বা অ্যাপমর্ম, গ্র্যাসেক, ইত্যাদি হিসাবে কোনও সুরক্ষা মডিউল) কোনও সমস্যা হতে পারে এবং পরিষেবাগুলির মধ্যে সংযোগের অনুমতি না দেয় এবং আপনার সার্ভারে এটি ঘটছে না তা নিশ্চিত করার জন্য আপনার নিরীক্ষার লগগুলিও পরীক্ষা করা উচিত ।

যদি আপনার ব্যাকএন্ড সঠিকভাবে কাজ না করে (এনগিনেক্সের মৃত্যুদণ্ডের ক্ষেত্রে ত্রুটি) আপনার এই ধরণের সমস্যা হবে, ব্যাকএন্ডটি সরাসরি অ্যাক্সেস করার চেষ্টা করুন এবং সবকিছু প্রত্যাশা অনুযায়ী চলছে কিনা তা নিশ্চিত করার জন্য লগগুলি পরীক্ষা করুন (প্যাকস আপনাকে মন্তব্যগুলিতেও বলেছিল) ।


0

বার্নিশ আপাতর ডেটা গ্রহণ করছে এবং 80 পোর্টটি শোনা উচিত। ভার্নিশের ডেটা এনগিনেক্সের প্রক্সি যা 8080 পোর্ট শুনে।

এনগিনেক্স কনফিগারেশন

server {
    listen 800;
    server_name www.example.com
}

বার্নিশ কনফিগারেশন - সুডো ন্যানো / ইত্যাদি / ডিফল্ট / বার্নিশ

DAEMON_OPTS="-a :80 \               #note on port 80 here
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m"

তারপরে এখানে 8080 (এনগিনএক্স) পোর্ট করার জন্য বার্নিশ প্রক্সি কনফিগারেশন রয়েছে - sudo Nano /etc/varnish/default.vcl

backend default {
.host = "127.0.0.1";
.port = "8080";
}

0

আমার একাধিক সাইট কনফিগারেশনে একই ত্রুটি ছিল এবং www থেকে www ডোমেন পুনঃনির্দেশের সমস্যা ছিল । এইভাবে আমি এটি কনফিগার করেছি (প্রাসঙ্গিক অংশ)।

আপনার .vclমধ্যেsub vcl_recv

vcl 4.0;

sub vcl_recv {
    #THIS IS THE IMPORTANT POINT
    #redirect non www to www domains ip no subdomain defined
    if (req.http.host ~ "^([-0-9a-zA-Z]+)\.([a-zA-Z]+)$") {
       return (synth (750, ""));
    }

    # Normalize the header, remove the port
    set req.http.host = regsub(req.http.host, ":[0-9]+", "");

    #OFTEN SHIPS WITH THIS OTHER ONE, COMMENT IT OTHERWISE IT WILL FAIL
    #set req.http.Host = regsub(req.http.Host, "^www\.", "");

    # For the sake of example, a couple of custom backends, 
    # note www is specified in the req.http.host
    if (req.http.host ~ "foo.example.tld") {
         set req.backend_hint = example;
    }
     elseif (req.http.host ~ "www.other.com") {
         set req.backend_hint = other;
    }

তারপরে sub vcl_synth, এটি যুক্ত করুন:

sub vcl_synth {
    if (resp.status == 750) {
        #redirect non www to www
        set resp.status = 301;
        set resp.http.Location = "http://www." + req.http.host + req.url;
        return(deliver);
    }

সুতরাং সেই পুনঃনির্দেশ বার্নিশ দ্বারা ব্যাকএন্ডের অনুরোধ করা , লুপগুলি এড়ানো বা কোনও ব্যাকএন্ড সংযোগের আগে পরিচালনা করা হবে ...

সর্বশেষে, আপনার সাইটে ভোস্টে, দুটি সার্ভার ব্লক থাকা দরকার নেই, আপনি মন্তব্য করতে বা এইচএসএফ-এ অপসারণ করতে পারেন

#server {
#        listen 1.2.3.4:8080;
#        server_name example.tld;
#        return 301 http://www.example.tld;
#}

server {
        listen 1.2.3.4:8080;
        server_name www.example.tld;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.