單個程序的埠路由/DNS
背景
Flickr 已經關閉了它的 http api,只留下了一個 https 的 api。我最喜歡的上傳器(在 wine 下執行的官方 Flickr Uploadr 2.5 版)不再維護,所以這個更改破壞了它。
我目前的解決方案是設置一個反向代理伺服器來轉換
http://www.flickr.com
和https://www.flickr.com
修復我的 DNS,以便將www.flickr.com
流量轉發到這個代理伺服器。這可行,但顯然我不希望我的所有 flickr 流量都流向代理,而只是來自上傳者的流量。
問題
我可以僅將來自該應用程序的流量(定向到 www.flickr.com)發送到我的反向代理嗎?
補充問題
有沒有更簡單的方法來實現這一點?例如,在沒有代理伺服器的情況下
http://www.flickr.com
直接轉發。https://www.flickr.com
解決方案
令人尷尬的是,該應用程序本身有一個代理設置,所以我所要做的就是將其設置為指向我的代理伺服器。或者,下面 Giles 的回答顯示瞭如何為單個 Unix 應用程序和所有 Wine 應用程序設置代理。
單獨的 DNS 對您沒有幫助:它可以將您的客戶端指向另一台機器,但該機器必須在埠 80 上提供預期的 Flickr 內容。
您需要的是一個代理,它通過 HTTP 接收 HTTP 請求並使用 HTTPS 重新發送它們。將您的上傳者指向此代理;代理是發出 DNS 請求的人,而不是客戶端,所以你根本不需要擺弄 DNS。
Apache with
mod_proxy
andmod_ssl
是一個簡單的,如果重量級的,這樣的代理。我現在想不出現成的輕量級解決方案。修改 PythonSimpleHTTPServer
可能是另一種解決方案。要將 Wine 應用程序指向代理,請參閱Wine FAQ §7.18 “如何配置代理?”。有兩種解決方案:
- 通常的 unix 解決方案:設置環境變數
http_proxy
,例如(如果您的代理正在偵聽埠 8070):export http_proxy=http://localhost:8070/ wine 'c:/Program Files/Flickr Uploader/Flickr Uploader.exe'
- Wine 方法:設置
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] ProxyEnable
系統資料庫項(有關語法,請參閱 Wine 常見問題解答)。