{"id":484,"date":"2026-10-14T17:21:38","date_gmt":"2026-10-14T17:21:38","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2016\/07\/28\/setting-the-proxy-configuratin-in-linux-and-windows\/"},"modified":"2026-10-14T17:21:38","modified_gmt":"2026-10-14T17:21:38","slug":"setting-the-proxy-configuratin-in-linux-and-windows","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/setting-the-proxy-configuratin-in-linux-and-windows\/","title":{"rendered":"How to Configure HTTP\/HTTPS Proxy on Linux and Windows (CLI, GUI, Registry, and APT)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Originally published on 2016-07-28; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your network requires a proxy server, CLI tools may fail until proxy variables are configured. This guide helps DevOps engineers and administrators set <code>http_proxy<\/code>\/<code>https_proxy<\/code> on <strong>Windows and Linux<\/strong>, make settings persistent, and fix common issues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This revision is based on the original post: <a href=\"https:\/\/www.devopsschool.com\/blog\/setting-the-proxy-configuratin-in-linux-and-windows\/\">How to Set or Configure Proxy in Linux and Windows System<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2016\/07\/proxy-configuration-in-linu.png\" alt=\"Proxy configuration in Linux and Windows\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">When proxy settings are needed<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Your organization routes outbound traffic through a proxy or firewall.<\/li><li>Commands such as package installs or API calls fail from terminal sessions.<\/li><li>You need different proxy scopes: current shell, system-wide, or tool-specific (for example, apt).<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Proxy setup workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use this flow to choose the right level of configuration and troubleshoot quickly.<\/p>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Need outbound internet access] --> B{Operating system}\n    B -- Windows --> C[Set proxy in shell or system settings]\n    B -- Linux --> D[Export proxy variables]\n    C --> E[Test command line access]\n    D --> E\n    E --> F{Still failing}\n    F -- Yes --> G[Configure tool specific proxy such as apt]\n    G --> H[If using sudo pass proxy variables]\n    F -- No --> I[Done]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Windows vs Linux proxy methods at a glance<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Platform<\/th><th>Scope<\/th><th>Best for<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Shell environment variables<\/td><td>Windows \/ Linux<\/td><td>Current terminal session<\/td><td>Quick testing<\/td><td>Lost when terminal closes<\/td><\/tr><tr><td>System Environment Variables (GUI)<\/td><td>Windows<\/td><td>User or system-wide<\/td><td>Persistent app behavior<\/td><td>UI path varies by Windows version<\/td><\/tr><tr><td>Registry + WinHTTP import<\/td><td>Windows<\/td><td>WinINET and WinHTTP alignment<\/td><td>Centralized Windows proxy setup<\/td><td>Requires careful validation<\/td><\/tr><tr><td>\/etc\/environment<\/td><td>Linux<\/td><td>System-wide environment<\/td><td>Persistent host defaults<\/td><td>Credentials are stored in plaintext<\/td><\/tr><tr><td>APT proxy config<\/td><td>Linux (Debian\/Ubuntu)<\/td><td>APT only<\/td><td>apt\/apt-get behind proxy<\/td><td>Useful when environment variables are ignored<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Configure proxy on Windows<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Temporary settings in Command Prompt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">These values apply to the current Command Prompt session.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\"><span class=\"hljs-keyword\">set<\/span> http_proxy=http:\/\/your_proxy:your_port\n<span class=\"hljs-keyword\">set<\/span> https_proxy=http:\/\/your_proxy:your_port\n<span class=\"hljs-keyword\">set<\/span> no_proxy=localhost,127.0.0.1,.example.internal\n\n<span class=\"hljs-keyword\">set<\/span> http_proxy=http:\/\/username:password@your_proxy:your_port\n<span class=\"hljs-keyword\">set<\/span> https_proxy=http:\/\/username:password@your_proxy:your_port<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Set environment variables via GUI<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Open Control Panel and select <strong>System<\/strong>.<\/li><li>Open <strong>Advanced system settings<\/strong>, then click <strong>Environment Variables<\/strong>.<\/li><li>Under System variables, click <strong>New<\/strong>.<\/li><li>Add <code>http_proxy<\/code> and <code>https_proxy<\/code> with your proxy URL.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Registry and WinHTTP commands<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The original post includes registry-based setup and WinHTTP import:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">reg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyEnable \/t REG_DWORD \/d <span class=\"hljs-number\">1<\/span> \/f\nreg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyServer \/t REG_SZ \/d proxyserveraddress:proxyport \/f\nnetsh winhttp <span class=\"hljs-keyword\">import<\/span> proxy source=ie<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Enable, disable, or change proxy quickly<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">reg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyEnable \/t REG_DWORD \/d <span class=\"hljs-number\">1<\/span> \/f\nreg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyEnable \/t REG_DWORD \/d <span class=\"hljs-number\">0<\/span> \/f\nreg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyServer \/t REG_SZ \/d proxyserveraddress:proxyport \/f<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Legacy credential keys from the original post<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The source also listed these keys; validate behavior in your Windows version before relying on them for authentication.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">reg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyUser \/t REG_SZ \/d username\nreg add <span class=\"hljs-string\">\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"<\/span> \/v ProxyPass \/t REG_SZ \/d password<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Configure proxy on Linux<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Temporary settings for the current shell<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\"><span class=\"hljs-keyword\">export<\/span> http_proxy=http:<span class=\"hljs-comment\">\/\/your_proxy:your_port<\/span>\n<span class=\"hljs-keyword\">export<\/span> https_proxy=http:<span class=\"hljs-comment\">\/\/your_proxy:your_port<\/span>\n<span class=\"hljs-keyword\">export<\/span> no_proxy=localhost,<span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>,.example.internal\n\n<span class=\"hljs-keyword\">export<\/span> http_proxy=http:<span class=\"hljs-comment\">\/\/username:password@your_proxy:your_port<\/span>\n<span class=\"hljs-keyword\">export<\/span> https_proxy=http:<span class=\"hljs-comment\">\/\/username:password@your_proxy:your_port<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Persist settings in \/etc\/environment<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The original FAQ points to <code>\/etc\/environment<\/code> for Ubuntu system-wide proxy values.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">http_proxy=<span class=\"hljs-string\">\"http:\/\/your_proxy:your_port\"<\/span>\nhttps_proxy=<span class=\"hljs-string\">\"http:\/\/your_proxy:your_port\"<\/span>\nno_proxy=<span class=\"hljs-string\">\"localhost,127.0.0.1,.example.internal\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Configure apt to use a proxy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If apt does not use your shell variables, add explicit proxy lines:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\">Acquire::http::Proxy <span class=\"hljs-string\">\"http:\/\/10.1.3.1:8080\/\"<\/span>;\nAcquire::https::Proxy <span class=\"hljs-string\">\"http:\/\/10.1.3.1:8080\/\"<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">When sudo does not pass proxy variables<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">From the original FAQ: a common failure is that <code>sudo<\/code> does not pass the proxy environment variable by default.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">sudo env http_proxy=http:<span class=\"hljs-comment\">\/\/10.1.3.1:8080 apt-get update<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">FAQ and quick troubleshooting<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>If your proxy password contains <code>@<\/code>, try URL-encoding it as <code>%40<\/code>.<\/li><li>If manual <code>export<\/code> works but <code>apt-get<\/code> with <code>sudo<\/code> fails, pass variables explicitly or adjust sudo policy.<\/li><li>Remember that some tools read environment variables, while others require tool-specific configuration.<\/li><\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-keyword\">echo<\/span> $http_proxy\n<span class=\"hljs-keyword\">echo<\/span> $https_proxy\n<span class=\"hljs-keyword\">echo<\/span> $no_proxy\nenv | grep -i proxy<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Set both <code>http_proxy<\/code> and <code>https_proxy<\/code> to avoid inconsistent behavior.<\/li><li>Avoid storing credentials in plaintext where possible; prefer secure secret handling mechanisms.<\/li><li>Use URL encoding for special characters in usernames\/passwords.<\/li><li>Document a rollback path (for example, disabling proxy values) for incident response.<\/li><li>Validate each target tool (curl, apt, build agents) because proxy handling differs by client.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Set up proxy access correctly on Windows and Linux for command-line tools, package managers, and system-level use. This guide covers quick commands, persistent configuration, and common troubleshooting steps.<\/p>\n","protected":false},"author":1,"featured_media":3044,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4957],"tags":[254,545,1163,1164,1161,1162,460,379,1159,1165,1166,1160,1158,182],"class_list":["post-484","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-configure","tag-how","tag-how-to-configure-proxy-in-linux","tag-how-to-configure-proxy-in-windows","tag-how-to-set-proxy-in-linux","tag-how-to-set-proxy-in-windows","tag-linux","tag-proxy","tag-proxy-configuration","tag-proxy-configuration-in-linux","tag-proxy-configuration-in-windows","tag-proxy-setting","tag-set","tag-windows"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=484"}],"version-history":[{"count":5,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/484\/revisions"}],"predecessor-version":[{"id":79365,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/484\/revisions\/79365"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3044"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}