2017-01-19 5 views
0

例: ドメインリバースプロキシhttps://tw.godaddy.comを使用したいのですが、これは可能ですか? 設定が機能しません。sginを使用するサイトをnginxでリバースプロキシにするにはどうすればいいですか?

 location ~/
    { 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_pass https://tw.godaddy.com; 
      proxy_set_header Host "tw.godaddy.com"; 
      proxy_set_header Accept-Encoding ""; 
      proxy_set_header User-Agent $http_user_agent; 
      #more_clear_headers "X-Frame-Options"; 
      sub_filter_once off; 
    } 

答えて

2

はい。可能です。

要件:--with-stream_ssl_module

でコンパイル--with-stream

  • でコンパイル

    • あなたはnginx -V

      構成例であることを確認することができます。

      stream { 
      
          upstream backend { 
           server backend1.example.com:12345; 
           server backend2.example.com:12345; 
           server backend3.example.com:12345; 
          } 
      
          server { 
           listen  12345; 
           proxy_pass backend; 
           proxy_ssl on; 
      
           proxy_ssl_certificate   /etc/nginx/nginxb.crt; 
           proxy_ssl_certificate_key  /etc/nginx/nginxb.key; 
           proxy_ssl_protocols   TLSv1 TLSv1.1 TLSv1.2; 
           proxy_ssl_ciphers    HIGH:!aNULL:!MD5; 
           proxy_ssl_trusted_certificate /etc/ssl/certs/trusted_ca_cert.crt; 
      
           proxy_ssl_verify  on; 
           proxy_ssl_verify_depth 2; 
           proxy_ssl_session_reuse on; 
          } 
      } 
      

      、について説明:SSLバックエンドの

      入れます:

      proxy_ssl on; 
      

      upstreamサーバーと証明書の秘密鍵で必要とされるSSLクライアント証明書へのパスを指定します。

      proxy_ssl_certificate   /etc/nginx/nginxb.crt; 
      proxy_ssl_certificate_key  /etc/nginx/nginxb.key; 
      

      これらのクライアント鍵/証明書はバックエンドへのSSLセッションを開始するための証明書です。バックエンドがあまりにproxy_ssl_verifyをオフにし、SSL深さを削除する自己署名されている場合は

      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/nginxb.key -out /etc/nginx/nginxb.crt 
      

      :あなたは経由で自己署名を作成することができます。

  • +1

    あなたの助けてくれてありがとう、私のヒーローです、私はそれを試してみましょう。しかし、どうすればbackend.crt backend.key trusted_ca_cert.crtを得ることができますか? – freedom

    +0

    @Farhad Farahiは、アップストリームサーバーが独自のものを提供している場合にまだ実際に必要な2倍の証明書ですか?ストリームブロック内で操作するときは、通過スルーとして機能していますか? – Chris

    +1

    @Chris:クライアントにsslを使用している場合(nginxリバースプロキシにssl動詞がある)、nginxはsslセッションを復号化し、再度暗号化してバックエンドに送信します。パススルーを使用するには、 'stream'ブロックを使用する必要があります。 –

    関連する問題