web-dev-qa-db-ja.com

NginxをHTTP / HTTPSプロキシサーバーとして使用する方法

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

17
vlad

いくつかのテストの後、私は私のために働いている次の構成を見つけました。

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;
  }
}

この構成は、HTTPSではなく、HTTPに対してのみ機能します。

14
vlad

私は短い答えはノーだと思います、それはフォワードプロキシのために書かれていませんでした

更新

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

NGINXは、フォワードプロキシを念頭に置いて作成されたことはありません。リモートで設定を実行して、希望どおりの操作を実行することは可能ですが、次の制限を理解する必要があります。

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

現時点では不明なその他の考慮事項:

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

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

4
MikeyB