Nginx
Nginx 位置重定向到從不同伺服器獲取的目標 URL
在我目前的場景中,有十幾個域上設置了 PHP 重定向腳本,該腳本從基於 $_SERVER 的 SQL 數據庫中獲取目標 URL
$$ ‘QUERY_STRING’ $$在使用者最初請求的 URL 中傳遞的參數。 NginX在這些伺服器中的每一個上都是這樣配置的(我們稱之為Domains_A/B/C):
location /r/ { rewrite ^/r/(.*)$ /r/index.php?$1; }
所以請求就像使用者 > Domains_A/B/C > 目標 URL
但我想要的是不必複製 PHP 重定向腳本並將此腳本保留在單個域中。這可以通過執行以下操作來獲得:
域名_A/B/C
location /r/ { rewrite ^/r/(.*)$ https://Domain_X/r/index.php?$1; }
Domain_X(帶有 PHP 重定向腳本)
location /r/ { rewrite ^/r/(.*)$ /r/index.php?$1; }
但這會將重定向乘以使用者 > Domain_A/B/C > Domain_X(使用 PHP 重定向腳本)> 目標 URL。而且發送到目標 URL 的引用者是 Domain_X,這是我試圖避免的。
我不想增加重定向並將Domains_A/B/C也保留為引用者。就像 NginX 在訪問 Domains_A/B/C 時從 Domain_X 獲取目標 URL 一樣,並將重定向直接指向來自Domains_A/B/C的目標 URL 。
Domains_A/B/C上的這些內容:
location /r/ { set Destination_URL get from https://Domain_X/r/index.php?$1; rewrite ^/r/(.*)$ Destination_URL; }
這可能嗎?我還沒有找到解決方案。
您可以
proxy_pass
向具有重定向腳本的域發出請求:在Domains_A/B/C上:
location /r/(.*)$ { proxy_pass https://Domain_X/r/index.php?$1; }
或者(在我的安裝中它只像這樣工作)
location ~ ^/r/(.*)$ { proxy_set_header Host PHP_SCRIPT_DOMAIN_NAME; proxy_pass https://PHP_SCRIPT_DOMAIN_IP:443/r/index.php?$1; }
在Domain_X(有 PHP 腳本)上。
location /r/ { rewrite ^/r/(.*)$ /r/index.php?$1; }