title: Varnish CentOS - Error 503 Backend fetch failed
body: <p>We installed Varnish but it was not work out like supposed to be.</p>
  
  <p>I setup Varnish to listen on Port 80 and Apache to listen on 8080.
  When i restart varnish and apache the pages keep loading and loading..
  I also tried to disable CSF..</p>
  
  <p>After that it shows: 
  Error 503 Backend fetch failed
  Guru Meditation:
  XID: 2818051</p>
  
  <p>Do someone knows how to fix this issue?</p>
  
  <p>Specs: 2.6.32-604.30.3.lve1.3.63.el6.x86_64 #1 SMP Sun Sep 27 06:34:10 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
  CentOS - Cloudlinux 6.7</p>
  
  <p>Below the config files:</p>
  
  <p><strong>httpd.conf</strong></p>
  
  <pre><code>#
  # This is the main Apache HTTP server configuration file.  It contains the
  # configuration directives that give the server its instructions.
  # See &lt;URL:http://httpd.apache.org/docs/2.4&gt; for detailed information.
  # In particular, see
  # &lt;URL:http://httpd.apache.org/docs/2.4/mod/directives.html&gt;
  # for a discussion of each configuration directive.
  #
  # Do NOT simply read the instructions in here without understanding
  # what they do.  They're here only as hints or reminders.  If you are unsure
  # consult the online docs. You have been warned.
  
  #
  # ServerRoot: The top of the directory tree under which the server's
  # configuration, error, and log files are kept.
  #
  # Do not add a slash at the end of the directory path.  If you point
  # ServerRoot at a non-local disk, be sure to specify a local disk on the
  # Mutex directive, if file-based mutexes are used.  If you wish to share the
  # same ServerRoot for multiple httpd daemons, you will need to change at
  # least PidFile.
  #
  ServerRoot "/etc/httpd"
  HostnameLookups Off
  #
  # Listen: Allows you to bind Apache to specific IP addresses and/or
  # ports, instead of the default. See also the &lt;VirtualHost&gt;
  # directive.
  #
  # Change this to Listen on specific IP addresses as shown below to
  # prevent Apache from glomming onto all bound IP addresses.
  #
  #Listen 12.34.56.78:80
  Listen 80
  
  &lt;IfModule unixd_module&gt;
  #
  # If you wish httpd to run as a different user or group, you must run
  # httpd as root initially and it will switch.
  #
  # User/Group: The name (or #number) of the user/group to run httpd as.
  # It is usually good practice to create a dedicated user and group for
  # running httpd, as with most system services.
  #
  User apache
  Group apache
  &lt;/IfModule&gt;
  
  #LoadModule dummy_module /usr/lib/apache/mod_dummy.so
  Include /etc/httpd/conf/extra/httpd-phpmodules.conf
  
  #
  # ServerAdmin: Your address, where problems with the server should be
  # e-mailed.  This address appears on some server-generated pages, such
  # as error documents.  e.g. admin@your-domain.com
  #
  ServerAdmin admin@localhost
  DocumentRoot "/var/www/html"
  
  &lt;IfModule dir_module&gt;
  
  &lt;IfModule dir_module&gt;
      DirectoryIndex index.html index.htm index.shtml index.php index.php5 index.php4 index.php3 index.phtml index.cgi
  &lt;/IfModule&gt;
  
  #
  # The following lines prevent .htaccess and .htpasswd files from being
  # viewed by Web clients.
  #
  &lt;Files ".ht*"&gt;
      Require all denied
  &lt;/Files&gt;
  
  #
  # The following lines prevent .user.ini files from being viewed by Web clients.
  #
  &lt;Files ".user.ini"&gt;
      Require all denied
  &lt;/Files&gt;
  
  #
  # ErrorLog: The location of the error log file.
  # If you do not specify an ErrorLog directive within a &lt;VirtualHost&gt;
  # container, error messages relating to that virtual host will be
  # logged here.  If you *do* define an error logfile for a &lt;VirtualHost&gt;
  # container, that host's errors will be logged there and not here.
  #
  ErrorLog /var/log/httpd/error_log
  
  #
  # LogLevel: Control the number of messages logged to the error_log.
  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  #
  LogLevel warn
  
  &lt;IfModule log_config_module&gt;
      #replace %b with %O for more accurate logging
      &lt;IfModule mod_logio.c&gt;
        LogFormat "%a %l %u %t \"%r\" %&gt;s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
        LogFormat "%a %l %u %t \"%r\" %&gt;s %O" common
        LogFormat "%O %I" bytes
  
        LogFormat "%a %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
      &lt;/IfModule&gt;
  
      CustomLog /var/log/httpd/access_log common
  &lt;/IfModule&gt;
  
  &lt;IfModule alias_module&gt;
      # Include some DirectAdmin alias
      Include conf/extra/httpd-alias.conf
  &lt;/IfModule&gt;
  
  #DefaultType text/plain
  
  &lt;IfModule mime_module&gt;
      TypesConfig conf/mime.types
      AddType application/x-gzip .tgz
      AddEncoding x-compress .Z
      AddEncoding x-gzip .gz .tgz
      AddType application/x-compress .Z
      AddType application/x-gzip .gz .tgz
      AddHandler cgi-script .cgi
      AddHandler type-map var
      AddType text/html .shtml
      AddOutputFilter INCLUDES .shtml
          AddType video/x-ms-asf .avi
          AddType video/mpeg .mpg
          AddType video/mpeg .mpeg
          AddType video/quicktime .mov
          AddType video/x-ms-wmv .wmv
  &lt;/IfModule&gt;
  
  #
  # MaxRanges: Maximum number of Ranges in a request before
  # returning the entire resource, or one of the special
  # values 'default', 'none' or 'unlimited'.
  # Default setting is to accept 200 Ranges.
  #MaxRanges unlimited
  
  #
  # EnableMMAP and EnableSendfile: On systems that support it,
  # memory-mapping or the sendfile syscall may be used to deliver
  # files.  This usually improves server performance, but must
  # be turned off when serving from networked-mounted
  # filesystems or if support for these functions is otherwise
  # broken on your system.
  # Defaults: EnableMMAP On, EnableSendfile Off
  #
  #EnableMMAP off
  #EnableSendfile off
  
  #######################################################################################
  # For user configurations not maintained by DirectAdmin. Empty by default.
  #######################################################################################
  
  Include conf/extra/httpd-includes.conf
  
  #######################################################################################
  # Supplemental configuration
  #######################################################################################
  
  # Options and AllowOverrides
  Include conf/extra/httpd-directories.conf
  
  # Nginx reverse proxy configuration
  Include conf/extra/httpd-nginx.conf
  
  # Server-pool management (MPM specific)
  Include conf/extra/httpd-mpm.conf
  
  # Multi-language error messages
  Include conf/extra/httpd-multilang-errordoc.conf
  
  # Fancy directory listings
  Include conf/extra/httpd-autoindex.conf
  
  # Language settings
  Include conf/extra/httpd-languages.conf
  
  # User home directories
  #Include conf/extra/httpd-userdir.conf
  
  # Real-time info on requests and configuration
  Include conf/extra/httpd-info.conf
  
  # Suphp
  Include conf/extra/httpd-suphp.conf
  
  # Local access to the Apache HTTP Server Manual
  #Include conf/extra/httpd-manual.conf
  
  # Distributed authoring and versioning (WebDAV)
  Include conf/extra/httpd-dav.conf
  
  # Various default settings
  Include conf/extra/httpd-default.conf
  
  # Secure (SSL/TLS) connections
  Include conf/extra/httpd-ssl.conf
  
  # Deflate module settings
  Include conf/extra/httpd-deflate.conf
  
  #######################################################################################
  # Do not change anything in files below, because they are rewritten by DirectAdmin    #
  #######################################################################################
  
  # This is needed for PHP
  Include conf/extra/httpd-php-handlers.conf
  
  # Virtual hosts
  Include conf/extra/httpd-vhosts.conf
  
  # All the DirectAdmin vhosts
  Include conf/extra/directadmin-vhosts.conf
  
  #######################################################################################
  # End of included files that are rewritten by DirectAdmin                             #
  #######################################################################################
  
  &lt;IfModule ssl_module&gt;
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
  &lt;/IfModule&gt;
  
  # Alias for RoundCube webmail
  # Alias /roundcube /var/www/html/roundcube/
  </code></pre>
  
  <p><strong>default.vcl</strong></p>
  
  <pre><code>#
  # This is an example VCL file for Varnish.
  #
  # It does not do anything by default, delegating control to the
  # builtin VCL. The builtin VCL is called when there is no explicit
  # return statement.
  #
  # See the VCL chapters in the Users Guide at https://www.varnish-cache.org/docs/
  # and http://varnish-cache.org/trac/wiki/VCLExamples for more examples.
  
  # Marker to tell the VCL compiler that this VCL has been adapted to the
  # new 4.0 format.
  vcl 4.0;
  
  # Default backend definition. Set this to point to your content server.
  backend default {
      .host = "149.210.175.70";
      .port = "80";
  }
  
  sub vcl_recv {
      # Happens before we check if we have this in cache already.
      #
      # Typically you clean up the request here, removing cookies you don't need,
      # rewriting the request, etc.
  }
  
  sub vcl_backend_response {
      # Happens after we have read the response headers from the backend.
      #
      # Here you clean the response headers, removing silly Set-Cookie headers
      # and other mistakes your backend does.
  }
  
  sub vcl_deliver {
      # Happens when we have all the pieces we need, and are about to send the
      # response to the client.
      #
      # You can do accounting or modifying the final object here.
  </code></pre>
  
  <p><strong>Sysconfig/varnish</strong></p>
  
  <pre><code># Configuration file for varnish
  #
  # /etc/init.d/varnish expects the variable $DAEMON_OPTS to be set from this
  # shell script fragment.
  #
  
  # Maximum number of open files (for ulimit -n)
  NFILES=131072
  
  # Locked shared memory (for ulimit -l)
  # Default log size is 82MB + header
  MEMLOCK=82000
  
  # Maximum number of threads (for ulimit -u)
  NPROCS="unlimited"
  
  # Maximum size of corefile (for ulimit -c). Default in Fedora is 0
  # DAEMON_COREFILE_LIMIT="unlimited"
  
  # Set this to 1 to make init script reload try to switch vcl without restart.
  # To make this work, you need to set the following variables
  # explicit: VARNISH_VCL_CONF, VARNISH_ADMIN_LISTEN_ADDRESS,
  # VARNISH_ADMIN_LISTEN_PORT, VARNISH_SECRET_FILE, or in short,
  # use Alternative 3, Advanced configuration, below
  RELOAD_VCL=1
  
  # 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 fixed-size cache file.
  #
  DAEMON_OPTS="-a :80 \
               -T localhost:6082 \
               -b localhost:8080 \
               -u varnish -g varnish \
               -s file,/var/lib/varnish/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
  # fixed-size cache file.
  #
  #DAEMON_OPTS="-a :6081 \
  #             -T localhost:6082 \
  #             -f /etc/varnish/default.vcl \
  #             -u varnish -g varnish \
  #             -S /etc/varnish/secret \
  #             -s file,/var/lib/varnish/varnish_storage.bin,1G"
  
  
  ## Alternative 3, Advanced configuration
  #
  # See varnishd(1) for more information.
  #
  # # Main configuration file. You probably want to change it :)
  VARNISH_VCL_CONF=/etc/varnish/default.vcl
  #
  # # Default address and port to bind to
  # # Blank address means all IPv4 and IPv6 interfaces, otherwise specify
  # # a host name, an IPv4 dotted quad, or an IPv6 address in brackets.
  # VARNISH_LISTEN_ADDRESS=
  VARNISH_LISTEN_PORT=80
  #
  # # Telnet admin interface listen address and port
  VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
  VARNISH_ADMIN_LISTEN_PORT=6082
  #
  # # Shared secret file for admin interface
  VARNISH_SECRET_FILE=/etc/varnish/secret
  #
  # # The minimum number of worker threads to start
  VARNISH_MIN_THREADS=50
  #
  # # The Maximum number of worker threads to start
  VARNISH_MAX_THREADS=1000
  #
  # # Idle timeout for worker threads
  VARNISH_THREAD_TIMEOUT=120
  #
  # # Cache file size: in bytes, optionally using k / M / G / T suffix,
  # # or in percentage of available disk space using the % suffix.
  VARNISH_STORAGE_SIZE=256M
  #
  # # Backend storage specification
  VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
  #
  # # Default TTL used when the backend does not specify one
  VARNISH_TTL=120
  #
  # # DAEMON_OPTS is used by the init script.  If you add or remove options, make
  # # sure you update this section, too.
  DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
               -f ${VARNISH_VCL_CONF} \
               -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
               -t ${VARNISH_TTL} \
               -p thread_pool_min=${VARNISH_MIN_THREADS} \
               -p thread_pool_max=${VARNISH_MAX_THREADS} \
               -p thread_pool_timeout=${VARNISH_THREAD_TIMEOUT} \
               -u varnish -g varnish \
               -S ${VARNISH_SECRET_FILE} \
               -s ${VARNISH_STORAGE}"
  #
  
  
  ## Alternative 4, Do It Yourself. See varnishd(1) for more information.
  #
  # DAEMON_OPTS=""
  </code></pre>