{"id":9376,"date":"2025-09-10T17:21:07","date_gmt":"2025-09-10T11:51:07","guid":{"rendered":"https:\/\/pheonixsolutions.com\/blog\/?p=9376"},"modified":"2026-01-06T12:09:32","modified_gmt":"2026-01-06T06:39:32","slug":"how-to-deploy-wordpress-behind-a-reverse-proxy-on-cpanel-apache","status":"publish","type":"post","link":"https:\/\/pheonixsolutions.com\/blog\/how-to-deploy-wordpress-behind-a-reverse-proxy-on-cpanel-apache\/","title":{"rendered":"How to Deploy WordPress Behind a Reverse Proxy on cPanel\/Apache"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Introduction <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Running WordPress behind a reverse proxy is a common requirement when your website sits behind an SSL-enabled domain or when you want to control requests before they hit your WordPress instance. This setup ensures security, flexibility, and proper handling of forwarded headers like HTTPS.<br>In this guide, we\u2019ll walk through setting up WordPress in a proxy environment under cPanel with Apache as the reverse proxy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prerequisites:<\/strong><br>1. A cPanel hosting account with SSH access.<br>2. Apache installed with mod_ssl, mod_rewrite, and mod_proxy enabled.<br>3. A valid SSL certificate issued for your domain (e.g., via Let\u2019s Encrypt).<br><br><strong>Step 1:<\/strong><br>For most cPanel accounts, the project web root is located under:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ cd \/example.com\/public_html\/test\/userguide<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 2:<\/strong><br>Fetch the latest version of WordPress:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ wget https:\/\/wordpress.org\/latest.tar.gz<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 3:<\/strong><br>Extract WordPress<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ tar -xzvf latest.tar.gz<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 4:<\/strong><br>Move the extracted files into your project directory and clean up:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ mv wordpress\/* \/example.com\/public_html\/test\/userguide\/<br>$ rm -rf wordpress latest.tar.gz<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 5:<\/strong><br>Edit the wp-config.php file and set your database credentials:<br><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>define(&#8216;DB_NAME&#8217;, &#8216;example_database&#8217;);<br>define(&#8216;DB_USER&#8217;, &#8216;example_wpuser&#8217;);<br>define(&#8216;DB_PASSWORD&#8217;, &#8216;example@123&#8217;);<br>define(&#8216;DB_HOST&#8217;, &#8216;localhost&#8217;);<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then, add the site URLs and configure proxy handling:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>define(&#8216;WP_HOME&#8217;, &#8216;https:\/\/example.com\/test\/user-guide&#8217;);<br>define(&#8216;WP_SITEURL&#8217;, &#8216;https:\/\/example.com\/test\/user-guide&#8217;);<br>\/\/ Handle forwarded HTTPS header from reverse proxy<br>if (isset($_SERVER[&#8216;HTTP_X_FORWARDED_PROTO&#8217;]) &amp;&amp; $_SERVER[&#8216;HTTP_X_FORWARDED_PROTO&#8217;] === &#8216;https&#8217;) {<br>$_SERVER[&#8216;HTTPS&#8217;] = &#8216;on&#8217;;<br>}<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 6:<\/strong><br>Assign the correct ownership to your WordPress directory:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ chown -R testownership:testownership \/home2\/example.com\/public_html\/test\/userguide\/<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 7:<\/strong><br>Edit your Apache SSL configuration file:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ vi \/etc\/apache2\/sites-available\/exampletest.com-le-ssl.conf<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Inside your &lt;virtualHost&gt; block, add:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>RequestHeader set X-Forwarded-Proto &#8220;https&#8221;<br>RequestHeader set X-Forwarded-Port &#8220;443&#8221;<br>Redirect non-slash to slash<br>RewriteEngine On<br>RewriteRule ^\/test\/user-guide$ \/test\/user-guide\/ [R=301,L]<br><br>RequestHeader set Host &#8220;example.com&#8221;<br>ProxyPass &#8220;http:\/\/example.com\/workforce\/user-guide\/&#8221;<br>ProxyPassReverse &#8220;http:\/\/example.com\/workforce\/user-guide\/&#8221;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 8:<\/strong><br>Run the following to check for syntax errors:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ apachectl -t<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 9:<\/strong><br>Apply your changes by restarting Apache<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ systemctl restart apache2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Running WordPress behind a reverse proxy is a common requirement when your website sits behind an SSL-enabled domain or [&hellip;]<\/p>\n","protected":false},"author":499,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1019],"tags":[],"class_list":["post-9376","post","type-post","status-publish","format-standard","hentry","category-cloud-aws","psol-cat-cloud-aws"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/phn2x7-2re","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/9376","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/users\/499"}],"replies":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=9376"}],"version-history":[{"count":1,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/9376\/revisions"}],"predecessor-version":[{"id":9689,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/9376\/revisions\/9689"}],"wp:attachment":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=9376"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=9376"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=9376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}