1. Overview

The curl command-line tool for transferring data using various network protocols. The most common use case for web developers is testing REST APIs.

In some environments, especially corporate networks, all HTTP traffic is routed through a proxy server.

In this tutorial, we’ll learn a few ways to set up curl to permanently use a proxy server of our choice.

2. Using a Proxy

First, let’s see how we tell curl to use a proxy server. Assume we want to access the Baeldung website through a proxy running on our local host, port 8080. We do this by executing the following statement:

$ curl --proxy https://baeldung.com

3. Create an Alias

A simple way to make curl use our proxy permanently would be to create an alias. Let’s append this line to our ~/.bashrc file:

$ alias curl="curl -x"

Now, after reloading our shell, running curl will invoke our alias and implicitly use the proxy server:

$ curl https://baeldung.com

In this example, we use the rc (run commands) file that is specific to Bash. Other shells have their own rc files. For example, the Z shell uses a file called ~/.zshrcWe could also choose to define the alias in our shell profile.

4. Using Environment Variables

Another way to tell curl to use our proxy server is by using the environment variable called http_proxy. We can set this variable using the export command:

$ export http_proxy=

We make this permanent by adding the variable to our shell profile. For example, in bash, we add it to our ~/.profile like this:


5. Using .curlrc

While the solutions above all work, curl actually has its own way of setting default options. On startup, curl will look for a ~/.curlrc file. We can append this line to ~/.curlrc to make it permanently use our proxy:


Should ~/.curlrc not already exist, we simply create a new file.

6. Conclusion

In this article, we learned how to make curl permanently send all requests through a proxy server. While there are several ways to do this, using a .curlrc file in our home directory is recommended.

Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.