How to Install Squid on CentOS

How to Install Squid Proxy on CentOS

Many webmasters face the challenge of optimizing web server performance while ensuring that data is delivered securely, because these days the need for speed and security in accessing web resources is of the most importance.

One solution to this challenge is the use of a proxy server. Specifically, the Squid Proxy Server, which is renowned for its flexibility, performance, and security features.

Squid is a caching proxy that supports HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Installing Squid on your dedicated, VPS, or cloud hosting machine running CentOS can significantly enhance your server’s efficiency.

In this quick tutorial, I will guide you step-by-step on how to install Squid on CentOS. By the end, you’ll have a fully functional Squid proxy server ready to optimize your web traffic. The benefits of this setup include faster web browsing for users, reduced server load, and enhanced security.

Let’s get started!

Step 1: Update Your System

Before diving into the installation of any new software, it’s paramount to ensure that your system is up-to-date. Regularly updating your system serves multiple purposes:

  • Security: New vulnerabilities are discovered frequently. By updating, you ensure that you have the latest security patches, reducing the risk of potential breaches.
  • Compatibility: Some software may require the latest versions of dependencies. An updated system ensures that you won’t run into compatibility issues.
  • Bug Fixes: Updates often come with fixes to known bugs, ensuring smoother operation.

To update your CentOS system, you’ll use the yum package manager. Here’s the command:

sudo yum update -y

When you execute this command, yum will fetch the latest versions of all packages and upgrade them. The -y flag automatically answers ‘yes’ to any prompts, streamlining the process.

Step 2: Install Squid

Having ensured that your system is updated, you’re now set to install Squid.

To install Squid on CentOS, you’ll again use the yum package manager. The CentOS repository contains the Squid package, making the installation straightforward:

sudo yum install squid -y

This command instructs yum to fetch the Squid package and install it. As before, the -y flag ensures a smooth installation by automatically confirming any prompts.

Step 3: Start and Enable Squid Service

Once Squid is installed, it’s essential to start its service. This action ensures that the proxy server begins its operations and starts serving requests. However, just starting the service isn’t enough for long-term use. If the server were to reboot, you’d want Squid to start automatically without manual intervention. This is where enabling the service comes into play.

See also  How to Setup Squid Proxy Server on Linux CentOS 6.3

Starting the Service

This initiates the Squid proxy server, allowing it to begin its operations.

sudo systemctl start squid

Enabling the Service

By enabling Squid, you’re setting it up to start automatically every time the system boots up. This is especially useful for ensuring uninterrupted service after system updates or reboots.

sudo systemctl enable squid

With these commands, not only do you activate Squid immediately, but you also ensure its automatic activation in future system startups.

Step 4: Configure Firewall Rules

Security is paramount, especially when dealing with web servers and proxy services. CentOS comes with a built-in firewall that restricts incoming and outgoing traffic based on predefined rules. While this is great for security, it can sometimes prevent legitimate services, like Squid, from functioning correctly.

Squid, by default, listens on port 3128. For external users or systems to access the Squid proxy server, this port needs to be accessible. Hence, you must configure the firewall to allow traffic on this port.

Adding a Firewall Rule

This command adds a rule to the firewall, permitting traffic on port 3128, which is the default port for Squid. The –permanent flag ensures that this rule persists even after system reboots.

sudo firewall-cmd --zone=public --add-port=3128/tcp --permanent

Reloading Firewall Configuration

After adding or modifying any firewall rules, it’s a good practice to reload the firewall configuration. This ensures that the new rules are active and in effect.

sudo firewall-cmd --reload

By executing these commands, you’re ensuring that external users can access the Squid proxy server, while still maintaining the security integrity of your CentOS system.

Step 5: Modify Squid Configuration (Optional)

Squid is a highly customizable proxy server, and its behavior is primarily determined by its configuration file. This file contains a myriad of settings and parameters that dictate how Squid operates, from access controls to cache settings.

The primary configuration file for Squid on CentOS is located at /etc/squid/squid.conf. This file is a comprehensive document, containing comments and explanations for most of its settings, making it a valuable resource even for those unfamiliar with Squid’s intricacies.

See also  How to Install nslookup on CentOS

To modify Squid’s configuration, you’ll need to edit this file. The nano editor is a simple, user-friendly text editor that’s commonly available on CentOS systems. You can use it to open and edit the configuration file:

sudo nano /etc/squid/squid.conf

While inside the file, you might encounter various sections. Here are a few common sections and settings you might want to adjust:

  • Access Control Lists (ACLs): These define which IP addresses or networks are allowed or denied access to the proxy server.
  • Cache Settings: Adjust how Squid caches content, including the size of the cache and the locations of cache directories.
  • Port Settings: By default, Squid listens on port 3128, but you can change this if needed.

Here’s basic configuration for Squid, tailored for general use-cases. This configuration sets up Squid as a caching proxy with basic access controls:

# Squid Configuration File

# Define the port Squid listens on
http_port 3128

# Define the disk cache settings
cache_dir ufs /var/spool/squid 100 16 256

# Access Control Lists (ACLs)
# Define the local network
acl localnet src     # RFC1918 possible internal network
acl localnet src  # RFC1918 possible internal network
acl localnet src # RFC1918 possible internal network

# Define Safe Ports
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http

# Deny all other ports
http_access deny !Safe_ports

# Allow local network to use the proxy
http_access allow localnet

# Deny all other access
http_access deny all

# Specify the machine's hostname
visible_hostname myproxyserver.local

# Enable logging
access_log /var/log/squid/access.log squid

# Refresh patterns to determine how frequently the cache is refreshed
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

After making your desired modifications in the nano editor, press CTRL + O to write the changes, followed by CTRL + X to exit the editor.

Any changes made to the configuration file require a restart of the Squid service to take effect. This ensures that Squid operates with the updated settings.

sudo systemctl restart squid

Remember, while Squid is highly customizable, it’s crucial to understand the implications of any changes you make. Always backup the original configuration file before making significant modifications, and consult the Squid documentation or forums if you’re unsure about specific settings.

See also  How to Configure Squid Proxy Server to Block Social Media Sites

Commands Mentioned:

  • sudo yum update -y – Updates the system packages.
  • sudo yum install squid -y – Installs Squid proxy server.
  • sudo systemctl start squid – Starts the Squid service.
  • sudo systemctl enable squid – Enables Squid to start on boot.
  • sudo firewall-cmd –zone=public –add-port=3128/tcp –permanent – Adds a firewall rule to allow traffic on port 3128.
  • sudo firewall-cmd –reload – Reloads the firewall configuration.
  • sudo nano /etc/squid/squid.conf – Opens the Squid configuration file for editing.
  • sudo systemctl restart squid – Restarts the Squid service after configuration changes.


Congratulations! You’ve successfully installed and set up the Squid proxy server on your CentOS machine. By integrating Squid into your server environment, you’ve taken a significant step towards optimizing web traffic, enhancing browsing speeds, and bolstering security.

Remember, Squid offers a plethora of configuration options, so you can tailor its performance to your specific needs. Explore capabilities, features and benefits in our Squid tutorials here on

I hope this tutorial has been informative and straightforward. If you’re interested in further optimizing your server environment, consider exploring other web server options such as Apache, Nginx, or LiteSpeed.

As always, I invite you to leave your comments and questions below. Your feedback helps us improve and provide more valuable content.


  1. What is the primary purpose of the Squid proxy server?

    Squid is primarily used as a caching proxy server. It caches frequently-requested web content, reducing bandwidth usage and improving response times for users.

  2. Can Squid handle HTTPS requests?

    Yes, Squid can handle HTTPS requests and can be configured to cache secure content, enhancing the security and performance of web traffic.

  3. How do I customize Squid’s behavior?

    Squid’s behavior can be customized by editing its configuration file located at `/etc/squid/squid.conf`. This file contains various directives that dictate how Squid operates.

  4. Is Squid compatible with all versions of CentOS?

    Squid is compatible with most versions of CentOS. However, it’s always recommended to check the compatibility with your specific CentOS version before installation.

  5. Can Squid be used with other operating systems besides CentOS?

    Yes, Squid is a versatile proxy server that can be installed on various operating systems, including other Linux distributions, Windows, and more.


Leave a Reply

Your email address will not be published. Required fields are marked *