Proxy

具有特定字元串的 Apache 代理重定向 URL

  • November 29, 2018

我有一台執行 2 個應用程序的伺服器。我正在使用公共 IP 地址,如果出現特定文本,我想以某種方式解析 url,呼叫將重定向到特定埠。在我的情況下,我希望如果 url 包含:

  • /myapp1/a1 -> 埠 82
  • /myapp2/a2 -> 埠 81

範例:假設我的公共 ip 是 publ,我的私人 ip 是 priv,以下 URL 應該由伺服器以這種方式解析:

http://publ/myapp1/a1/something -> http://priv:82/myapp1/a1/something http://publ/myapp2/a2/something -> http://priv:81/myapp2/a2 /某物

我正在嘗試以提供反向代理的方式配置 Apache。按照我在站點可用中的配置,還添加了站點啟用:

ServerName p.r.i.v

ProxyPassMatch "/myapp1/a1(.*)$" "http://p.r.i.v:82/myapp1/a1/$1"
ProxyPassReverse "/myapp1/a1(.*)$" "http://p.r.i.v:82/myapp1/a1/$1"

ProxyPassMatch "/myapp2/a2(.*)$" "http://p.r.i.v:81/myapp2/a2/$1"
ProxyPassReverse "/myapp2/a2(.*)$" "http://p.r.i.v:81/myapp2/a2/$1"

但是重定向不起作用。我錯過了什麼?請考慮直接訪問私有資源的工作,意思是*http://priv:81/myapp2/a2/something,但http://publ/myapp2/a2/something*沒有解決

感謝任何幫助謝謝西蒙妮

問題已解決。在代理的 url 中有一個編碼的字元,它需要一個正確的定義。在這種情況下,我在 ProxyPass 和 ProxyPassReverse 規則旁邊添加了AllowEncodedSlashes On和。nocanon

謝謝西蒙妮

引用自:https://serverfault.com/questions/940692