title: Setting up a forward proxy using Apache Traffic Server which forwards all request to another proxy and caches responses
body: <p>Setting up a forward proxy using Apache Traffic Server which forwards all request to another proxy and caches responses. I want to setup caching in front of my crawlers so that unwanted js and CSS requests can be cached all the time. I already have a setup where a load balancer is forwarding proxy requests to the setup of proxy services. I want to put ATS between the crawlers and load balancer. My current ATS records.config and parent.config are given below. </p>
  
  <p>Currently when I try to do this,  curl --proxy localhost:8080 "<a href="https://exmaple.com/path" rel="nofollow noreferrer">https://exmaple.com/path</a>" I get this error : curl: (56) Received HTTP code 502 from proxy after CONNECT</p>
  
  <p>Here is my parent.config
  <code>dest_domains=. parent="localhost:3128;" round_robin=strict</code></p>
  
  <p>Here is my records.config </p>
  
  <pre><code>##############################################################################
  # *NOTE*: All options covered in this file should be documented in the docs:
  #
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/records.config.en.html
  ##############################################################################
  ##############################################################################
  # Thread configurations. Docs:
  #    https://docs.trafficserver.apache.org/records.config#proxy-config-exec-thread-autoconfig
  ##############################################################################
  CONFIG proxy.config.exec_thread.autoconfig INT 1
  CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.500000
  CONFIG proxy.config.exec_thread.limit INT 2
  CONFIG proxy.config.ssl.number.threads INT 0
  CONFIG proxy.config.accept_threads INT 1
  CONFIG proxy.config.task_threads INT 2
  CONFIG proxy.config.cache.threads_per_disk INT 8
      # https://docs.trafficserver.apache.org/records.config#proxy-config-exec-thread-affinity
  CONFIG proxy.config.exec_thread.affinity INT 0
  ##############################################################################
  # Specify server addresses and ports to bind for HTTP and HTTPS. Docs:
  #    https://docs.trafficserver.apache.org/records.config#proxy-config-http-server-ports
  ##############################################################################
  CONFIG proxy.config.http.server_ports STRING 8080
  ##############################################################################
  # Via: headers. Docs:
  #     https://docs.trafficserver.apache.org/records.config#proxy-config-http-insert-response-via-str
  ##############################################################################
  CONFIG proxy.config.http.insert_request_via_str INT 1
  CONFIG proxy.config.http.insert_response_via_str INT 0
  ##############################################################################
  # Parent proxy configuration, in addition to these settings also see parent.config. Docs:
  #    https://docs.trafficserver.apache.org/records.config#parent-proxy-configuration
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/parent.config.en.html
  ##############################################################################
  CONFIG proxy.config.http.parent_proxy_routing_enable INT 1
  CONFIG proxy.config.http.parent_proxy.retry_time INT 300
  CONFIG proxy.config.http.parent_proxy.connect_attempts_timeout INT 30
  CONFIG proxy.config.http.forward.proxy_auth_to_parent INT 0
  CONFIG proxy.config.http.uncacheable_requests_bypass_parent INT 1
  ##############################################################################
  # HTTP connection timeouts (secs). Docs:
  #    https://docs.trafficserver.apache.org/records.config#http-connection-timeouts
  ##############################################################################
  CONFIG proxy.config.http.keep_alive_no_activity_timeout_in INT 115
  CONFIG proxy.config.http.keep_alive_no_activity_timeout_out INT 120
  CONFIG proxy.config.http.transaction_no_activity_timeout_in INT 30
  CONFIG proxy.config.http.transaction_no_activity_timeout_out INT 30
  CONFIG proxy.config.http.transaction_active_timeout_in INT 900
  CONFIG proxy.config.http.transaction_active_timeout_out INT 0
  CONFIG proxy.config.http.accept_no_activity_timeout INT 120
  CONFIG proxy.config.net.default_inactivity_timeout INT 86400
  ##############################################################################
  # Origin server connect attempts. Docs:
  #    https://docs.trafficserver.apache.org/records.config#origin-server-connect-attempts
  ##############################################################################
  CONFIG proxy.config.http.connect_attempts_max_retries INT 6
  CONFIG proxy.config.http.connect_attempts_max_retries_dead_server INT 3
  CONFIG proxy.config.http.connect_attempts_rr_retries INT 3
  CONFIG proxy.config.http.connect_attempts_timeout INT 30
  CONFIG proxy.config.http.post_connect_attempts_timeout INT 1800
  CONFIG proxy.config.http.down_server.cache_time INT 300
  CONFIG proxy.config.http.down_server.abort_threshold INT 10
  ##############################################################################
  # Negative response caching, for redirects and errors. Docs:
  #    https://docs.trafficserver.apache.org/records.config#negative-response-caching
  ##############################################################################
  CONFIG proxy.config.http.negative_caching_enabled INT 0
  CONFIG proxy.config.http.negative_caching_lifetime INT 1800
  ##############################################################################
  # Proxy users variables. Docs:
  #    https://docs.trafficserver.apache.org/records.config#proxy-user-variables
  ##############################################################################
  CONFIG proxy.config.http.anonymize_insert_client_ip INT 1
  CONFIG proxy.config.http.insert_squid_x_forwarded_for INT 1
  ##############################################################################
  # Security. Docs:
  #    https://docs.trafficserver.apache.org/records.config#security
  ##############################################################################
  CONFIG proxy.config.http.push_method_enabled INT 0
  ##############################################################################
  # Enable / disable HTTP caching. Useful for testing, but also as an
  # overridable (per remap) config
  ##############################################################################
  CONFIG proxy.config.http.cache.http INT 1
  ##############################################################################
  # Cache control. Docs:
  #    https://docs.trafficserver.apache.org/records.config#cache-control
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/cache.config.en.html
  ##############################################################################
  CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
  CONFIG proxy.config.http.normalize_ae_gzip INT 1
  CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
  CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
      # https://docs.trafficserver.apache.org/records.config#proxy-config-http-cache-when-to-revalidate
  CONFIG proxy.config.http.cache.when_to_revalidate INT 0
      # https://docs.trafficserver.apache.org/records.config#proxy-config-http-cache-required-headers
  CONFIG proxy.config.http.cache.required_headers INT 0
  ##############################################################################
  # Heuristic cache expiration. Docs:
  #    https://docs.trafficserver.apache.org/records.config#heuristic-expiration
  ##############################################################################
  CONFIG proxy.config.http.cache.heuristic_min_lifetime INT 3600
  CONFIG proxy.config.http.cache.heuristic_max_lifetime INT 86400
  CONFIG proxy.config.http.cache.heuristic_lm_factor FLOAT 0.100000
  ##############################################################################
  # Network. Docs:
  #    https://docs.trafficserver.apache.org/records.config#network
  ##############################################################################
  CONFIG proxy.config.net.connections_throttle INT 30000
  ##############################################################################
  # RAM and disk cache configurations. Docs:
  #    https://docs.trafficserver.apache.org/records.config#ram-cache
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/storage.config.en.html
  ##############################################################################
  CONFIG proxy.config.cache.ram_cache.size INT -1
  CONFIG proxy.config.cache.ram_cache_cutoff INT 4194304
      # https://docs.trafficserver.apache.org/records.config#proxy-config-cache-limits-http-max-alts
  CONFIG proxy.config.cache.limits.http.max_alts INT 5
      # https://docs.trafficserver.apache.org/records.config#proxy-config-cache-max-doc-size
  CONFIG proxy.config.cache.max_doc_size INT 0
  CONFIG proxy.config.cache.min_average_object_size INT 8000
  ##############################################################################
  # Logging Config. Docs:
  #    https://docs.trafficserver.apache.org/records.config#logging-configuration
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/logs_xml.config.en.html
  ##############################################################################
  CONFIG proxy.config.log.logging_enabled INT 3
  CONFIG proxy.config.log.max_space_mb_for_logs INT 2000
  CONFIG proxy.config.log.max_space_mb_headroom INT 1000
  CONFIG proxy.config.log.squid_log_enabled INT 1
  CONFIG proxy.config.log.squid_log_is_ascii INT 0
  CONFIG proxy.config.log.rolling_enabled INT 1
  CONFIG proxy.config.log.rolling_interval_sec INT 86400
  CONFIG proxy.config.log.rolling_size_mb INT 10
  CONFIG proxy.config.log.auto_delete_rolled_files INT 1
  ##############################################################################
  # These settings control remapping, and if the proxy allows (open) forward proxy or not. Docs:
  #    https://docs.trafficserver.apache.org/records.config#url-remap-rules
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/remap.config.en.html
  ##############################################################################
  CONFIG proxy.config.url_remap.remap_required INT 0
      # https://docs.trafficserver.apache.org/records.config#proxy-config-url-remap-pristine-host-hdr
  CONFIG proxy.config.url_remap.pristine_host_hdr INT 0
      # https://docs.trafficserver.apache.org/records.config#reverse-proxy
  CONFIG proxy.config.reverse_proxy.enabled INT 0
  ##############################################################################
  # SSL Termination. Docs:
  #    https://docs.trafficserver.apache.org/records.config#client-related-configuration
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/ssl_multicert.config.en.html
  ##############################################################################
  CONFIG proxy.config.ssl.client.verify.server INT 0
  CONFIG proxy.config.ssl.client.CA.cert.filename STRING NULL
  CONFIG proxy.config.ssl.server.cipher_suite STRING ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RC4-SHA:RC4-MD5:AES128-SHA:AES256-SHA:DES-CBC3-SHA!SRP:!DSS:!PSK:!aNULL:!eNULL:!SSLv2
  ##############################################################################
  # ICP Configuration. Docs:
  #    https://docs.trafficserver.apache.org/records.config#icp-configuration
  #    https://docs.trafficserver.apache.org/en/latest/reference/configuration/icp.config.en.html
  ##############################################################################
  CONFIG proxy.config.icp.enabled INT 0
  ##############################################################################
  # Debugging. Docs:
  #    https://docs.trafficserver.apache.org/records.config#diagnostic-logging-configuration
  ##############################################################################
  CONFIG proxy.config.diags.debug.enabled INT 0
  CONFIG proxy.config.diags.debug.tags STRING http.*|dns.*
  # ToDo: Undocumented
  CONFIG proxy.config.dump_mem_info_frequency INT 0
  CONFIG proxy.config.http.slow.log.threshold INT 0
  ##############################################################################
  # Cluster Subsystem. Docs:
  #    https://docs.trafficserver.apache.org/records.config#cluster
  ##############################################################################
  LOCAL proxy.local.cluster.type INT 3
  CONFIG proxy.config.cluster.ethernet_interface STRING lo
  CONFIG proxy.config.cluster.cluster_port INT 8086
  CONFIG proxy.config.cluster.rsport INT 8088
  CONFIG proxy.config.cluster.mcport INT 8089
  CONFIG proxy.config.cluster.mc_group_addr STRING 224.0.1.37
  CONFIG proxy.config.body_factory.template_sets_dir STRING /etc/trafficserver/body_factory
  CONFIG proxy.config.url_remap.filename STRING remap.config
  CONFIG proxy.config.http_ui_enabled INT 1
  
  CONFIG proxy.config.admin.user_id STRING trafficserver
  CONFIG proxy.config.http.no_dns_just_forward_to_parent INT 1
  </code></pre>