NginxをHTTP / HTTPSプロキシサーバーとして使用する方法は?[閉まっている]


15

NginxをHTTP / HTTPSプロキシとして使用することはできますか?

回答:


13

いくつかのテストを行った後、次の構成が機能していることがわかりました。

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

この構成は、HTTPに対してのみ機能し、HTTPSには機能しません。


4
よくやった!いくつかのヒント。1: listen ... default_server。2:server_name ""またはserver_name _。2: proxy_pass $scheme://$http_host。制限:ポート80のみのアップストリームへのポキシング。リダイレクト自体は処理しません。
アレクサンダーアザロフ

$方式は、HTTPS上のバーチャルホストリッスン場合のみ有効です-しかし、あなたはと競合するミドルリスクおよびHTTPS証明書エラーで男を持っている...両方が考慮することが、大きなセキュリティ上の問題である
anthonysomerset

7

私は短い答えはノーだと思う、それはフォワードプロキシのために書かれていなかった

更新

上記の私の声明を明確にするために:

NGINXはフォワードプロキシを念頭に置いて記述されたことはありません-何らかの方法で設定をジェリーリグしてリモートで実行することができますが、次の制限を理解する必要があります。

  • キャッシュはほとんど存在しません(プロキシを使用する主な理由の1つ)
  • ポート80以外のトラフィックには使用できません(つまり、それを介してcpanelボックスにログインしません)
  • SSLベースのトラフィックはサポートされていません
  • 標準のプロキシヘッダーとhttpキャッシュヘッダーのサポートはありません(私の理解では、これらは単に通過するだけです
  • プロキシサーバーをサポートする他のプロトコル(VPNなど)のサポートなし

現時点では不明な、考えられるその他の考慮事項:

  • きめ細かなアクセス制御/認証の実際の機能としてプロキシをDoSすることは可能です(nginxはさまざまなアクセス制御方法をサポートしていますが、フォワードプロキシコンテキストでの動作が不明です)
  • 実行するように設計されていない方法で使用したために考慮されていない可能性のあるセキュリティホールがある可能性があるため、nginxがインストールされているマシンのセキュリティリスクの可能性


モンキーパッチの努力は、非標準(ポート80)のポートへのリクエストをプロキシのようなフルプロキシのサポートを提供しません-おそらく私の答えは、それが前方プロキシを行うように設計された波平明確にされている必要があります
anthonysomerset

3

HTTP / HTTPSプロキシを使用する場合は、Squidを使用する必要があります。まさにそれを行うために書かれました。Nginxは、リバースプロキシおよびロードバランサーとして機能するように作成されましたが、フォワードプロキシとしては機能しません。


squid / oops / tinyproxy / etcについて知っています。私は学術的な関心のためにこの質問を
ヴラド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.