{"id":381,"date":"2020-12-16T02:19:43","date_gmt":"2020-12-15T20:49:43","guid":{"rendered":"https:\/\/www.bhuvankrishna.in\/blog\/?p=381"},"modified":"2020-12-16T02:19:43","modified_gmt":"2020-12-15T20:49:43","slug":"apache-reverse-proxy-to-forward-requests-on-a-custom-port-to-a-local-system","status":"publish","type":"post","link":"https:\/\/www.bhuvankrishna.in\/blog\/2020\/12\/16\/apache-reverse-proxy-to-forward-requests-on-a-custom-port-to-a-local-system\/","title":{"rendered":"Apache reverse proxy to forward requests on a custom port to a local system"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This configuration of apache is a little specific to forwarding all requests coming to a custom port on the host system to a local system which maybe running a service on custom port.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let us say we have 2 systems. System A and B where A can be accessed from the internet on lets say port 8084 and system B which is in the local system is hosting a service on port 8700. Now if someone from outside wants to access B:8700 then they can not do it directly unless we find a way to redirect requests to it from the public facing system A. Apache reverse proxy comes handy to do the job and it is relatively easy to configure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following setup is tested on debian bullseye with apache 2.4. The same may work on other systems to as it is fairly simple to setup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On system A<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First make sure apache is installed and running if not install it with apt-get install apache2. Then follow these steps.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Enable these modules for reverse proxy. use the command a2enmod. Some of the modules may not be needed I just enabled them following a guide.<ol><li>proxy<\/li><li>proxy_http<\/li><li>proxy_ajp<\/li><li>rewrite<\/li><li>deflate<\/li><li>headers<\/li><li>proxy_balancer<\/li><li>proxy_connect<\/li><li>proxy_html<\/li><\/ol><\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Restart apache <code>systemctl restart apache2<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. Enable custom port in \/etc\/apache2\/ports.conf<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Listen 80<br>Listen 8084 &lt;This is added in the file><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. Now create a file for virtualhost in \/etc\/apache2\/sites-available\/proxy.conf and add these lines. You may change the ports and local ip according to your setup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;VirtualHost *:8084><br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ProxyPreserveHost On<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ProxyPass \/ http:\/\/192.168.1.3:8700\/<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ProxyPassReverse \/ http:\/\/192.168.1.3:8700\/<br><br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ErrorLog ${APACHE_LOG_DIR}\/error.log<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CustomLog ${APACHE_LOG_DIR}\/access.log combined<br>&lt;\/VirtualHost><\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restart apache and test with public IP:8084. the traffic should be going to system B which is at 192.168.3:8700. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I took help from these sources<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension\" data-type=\"URL\" data-id=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension\">https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.mirantis.com\/blog\/quick-tip-use-apache-as-a-proxy-server-to-access-internal-ips-from-an-external-machine\/\">https:\/\/www.mirantis.com\/blog\/quick-tip-use-apache-as-a-proxy-server-to-access-internal-ips-from-an-external-machine\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This configuration of apache is a little specific to forwarding all requests coming to a custom port on the host system to a local system which maybe running a service on custom port. Let us say we have 2 systems. System A and B where A can be accessed from the internet on lets say\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.bhuvankrishna.in\/blog\/2020\/12\/16\/apache-reverse-proxy-to-forward-requests-on-a-custom-port-to-a-local-system\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-381","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/posts\/381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/comments?post=381"}],"version-history":[{"count":1,"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions"}],"predecessor-version":[{"id":382,"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions\/382"}],"wp:attachment":[{"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/media?parent=381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/categories?post=381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bhuvankrishna.in\/blog\/wp-json\/wp\/v2\/tags?post=381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}