Linux幾種轉發請求方案

前言

  當咱們在對接第三方的時候,免不了會遇到白名單限制問題,致使咱們本地開發環境受限,不能調用接口。難以完成整個業務流程。
分析以下場景:nginx

好比第三方有臺機器 IP 爲 1.1.1.1  端口8080
正式環境爲1.1.1.1:8080/pro/api
測試環境爲1.1.1.1:8080/test/api
可是第三方的機器不容許任何IP均可以調用,他們只容許你方一臺機器加入白名單
好比你線上的一臺機器IP是2.2.2.2已經加入白名單,這沒問題。
可是你要作開發 要調用他們測試環境的API,卻發現調用不了,並且你總不能在2.2.2.2上面寫代碼調試吧。

解決方案

跳板服務

  若是既然不能直接調用1.1.1.1 那麼徹底讓2.2.2.2寫個服務,做爲跳板,也就是把咱們的請求給2.2.2.2,而後2.2.2.2再原封不動傳給1.1.1.1api

Nginx轉發

  這個會比跳板服務簡單多了。只要2.2.2.2 開啓nginx運維

listen       8080;
location /test/api/{
    proxy_pass  1.1.1.1:8080;
}

端口映射

  不管是跳板服務仍是nginx轉發 咱們要作的事情就更多了。因此咱們要想到另外一種思路。就是2.2.2.2這臺機器能不能幫我轉發,只是做爲一箇中間者。就是我請求了2.2.2.2:8080 實際上請求到了是1.1.1.1:8080.轉發也能夠用iptables 或者firewalld作NAT轉發,可是不懂得原理的會比較複雜,這裏推薦一款工具,rinted,一行配置搞定轉發。ssh

  • wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
  • mkdir /usr/man/
  • vi /etc/rinetd.conf
    0.0.0.0 7075 10.46.108.225 7075 本機7075端口轉發映射到10.46.108.225:7075
  • 壓縮,進入目錄 make && make install
  • rinetd -c /etc/rinetd.conf 讀取映射轉發配置,使之生效

補充拓展

SSH跳板機

ssh轉發也能夠用上面的方式,這樣的話,假設你有十臺機器。而後你能夠用端口轉發請求,這樣只須要一臺機器作跳板機,這也是屬於黑科技,固然運維的話有更好的方式。
0.0.0.0 2221 機器A的IP 22
0.0.0.0 2222 機器B的IP 22
0.0.0.0 2223 機器C的IP 22
0.0.0.0 2224 機器D的IP 22工具

FTP轉發

...待補充測試

總結

  反正就是,多瞭解Linux,有些時候能夠利用Linux知識來解決業務問題。調試

相關文章
相關標籤/搜索