Ubuntu
做反向代理時伺服器請求 URL 出現錯誤
我的目標是當有人訪問時
main_site.com/blog
,他們會從other_site.com/example_blog
. 這兩個站點都執行 Apache 2.4 和 Ubuntu(分別為 14.04 和 16.04)。我在伺服器
/var/www/html/
文件夾根目錄的 index.php 頂部有以下程式碼。other_site.com
// http://stackoverflow.com/a/6768831/3774582 echo (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; die();
當我在瀏覽器中訪問 main_site.com/blog 時,我發現瀏覽器認為的完整 URL 與 PHP 認為的完整 URL 不匹配。
它從 URL 中刪除“部落格”。這會導致軟體(在本例中為 WordPress)相信使用者應該被重定向到
main_site.com/blog
(重定向到我們已經打開的 URL)並重複此操作,直到遇到太多重定向錯誤。除了 SSL 配置之外,other_site.com 的 apache 尚未定制。這是 main_site.com 的相關 apache
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule ssl_module modules/mod_ssl.so SSLProxyEngine On ProxyPreserveHost On ProxyRequests Off <Location /blog> ProxyPass https://blog.main_site.com ProxyPassReverse https://blog.main_site.com Order allow,deny Allow from all </Location>
WordPress 不只是相信缺少
/example_blog
:它實際上是缺少的。你應該有:
ServerName example.com <Location /blog> ProxyPass https://example.org/example_blog ProxyPassReverse https://example.org/example_blog
您可能還需要調整
Set-Cookie
標頭中的域和路徑字元串:ProxyPassReverseCookieDomain "example.org" "example.com" ProxyPassReverseCookiePath "/example_blog/" "/blog/" </Location>