私のローカルコンピュータにはパブリックIPがなく、IT部門でNATを設定できません。リクエストを自分のローカルサーバーに転送するリモートパブリックサーバーにプロキシを設定したいと思います。
私はprivoxy + sshを使ってみましたが、ヘッダーが無効であると思います。
ステップ1:以下を介してsshtunelを開く
ssh -nNT -R 8081:localhost:8080 [email protected]
ステップ2:リモートコンピュータでプライバシー設定を設定しました。
forward-socks5 / 127.0.0.1:8081 .
listen-address 0.0.0.0:8080
そして
forward / 127.0.0.1:8081
listen-address 0.0.0.0:8080
どちらもブラウザのヘッダーが無効であると言います。
答え1
以下を使用してトンネルを開けませんでした。
ssh -R -nNT 8081:localhost:8080 [email protected]
しかし、失敗する必要があります。
しなければならない
ssh -nNT -R 8081:localhost:8080 [email protected]
これをリモートポート転送と呼びます。
答え2
数回調査したところ、次の理由がわかりました。
Privoxyはこのようなリバースプロキシ操作には適していません。SSH転送はローカルトラフィックのみを許可できます。
したがって、この問題を解決するには2つの方法があります。
TCP配信のためのiptablesルールの設定(私はこれについての専門家ではありませんが、可能だと思います)
要求を SSH 転送ポートに転送するリバースプロキシを設定します。これはnginxを介して行うことも、goを使用するなどの簡単なものを直接作成することもできます。
例えば
package main
import (
"net/http/httputil"
"net/http"
"net/url"
"log"
)
func main() {
target, _ := url.Parse("http://localhost:8081")
proxy := httputil.NewSingleHostReverseProxy(target);
http.Handle("/", proxy)
log.Fatal(http.ListenAndServe(":8080", nil))
}