如何通过nginx反向代理使用ssl的网站?

时间:2017-01-19 15:42:09

标签: nginx proxy reverse

例如: 我想使用域反向代理https://tw.godaddy.com,这可能吗? 我的配置不起作用。

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

1 个答案:

答案 0 :(得分:2)

是。这是可能的。

要求:

  • 使用--with-stream
  • 编译
  • 使用--with-stream_ssl_module
  • 编译

您可以使用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会话到后端的证书。你可以通过以下方式创建自签名:

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

如果后端是自签名的,请关闭proxy_ssl_verify并删除ssl深度。