-
-
Save plutext/2f4d25e98df714baa54ff5f93ca4629a to your computer and use it in GitHub Desktop.
Wordpress Reverse Proxy Plugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @package Reverse Proxy | |
*/ | |
/* | |
Plugin Name: Reverse Proxy | |
Plugin URI: https://instrumentalapp.com/ | |
Description: Reverse proxy setup for Instrumental blog | |
Version: 1.0 | |
Author: James Paden | |
Author URI: https://instrumentalapp.com | |
*/ | |
// Change to match the desired subfolder, no leading or tralling slash | |
define("RP_SUBFOLDER", "blog"); | |
function rp_is_login_page() { | |
return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')); | |
} | |
if ( $_SERVER["REMOTE_ADDR"] != "127.0.0.1" && !is_admin() && !rp_is_login_page() && $_GET["preview"] != "true" ) { | |
add_action( 'init', function () { | |
if (!$_SERVER["HTTP_X_IS_REVERSE_PROXY"]) { | |
//not coming from us, 404 it. | |
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); | |
exit; | |
} | |
}); | |
//From http://stackoverflow.com/questions/772510/wordpress-filter-to-modify-final-html-output | |
ob_start(); | |
add_action('shutdown', function() { | |
$final = ''; | |
$levels = count(ob_get_level()); | |
for ( $i = 0; $i < $levels; $i++ ) { | |
$final .= ob_get_clean(); | |
} | |
// Apply any filters to the final output | |
$final = str_replace("http://" . $_SERVER["HTTP_HOST"], "https://" . $_SERVER["HTTP_X_ORIGINAL_HOST"] . "/" . RP_SUBFOLDER, $final); | |
echo $final; | |
}, 0); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Example code for Apache config | |
# Put this inside the <VirtualHost> directive | |
<Location /blog> | |
RequestHeader set X-Is-Reverse=Proxy true | |
RequestHeader set X-Original-Host yourwebsite.com | |
ProxyPass http://yourpressableblog.com | |
ProxyPassReverse http://yourpressableblog.com | |
</Location> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Example code for Nginx config | |
# Put this inside the "server {" section | |
location /blog/ { | |
proxy_set_header X-Original-Host $host; | |
proxy_set_header X-Is-Reverse-Proxy "true"; | |
proxy_pass_header Set-Cookie; | |
proxy_cookie_path / /blog/; | |
proxy_pass http://yourpressableblog.com/; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment