240 发简信
IP属地:江苏
  • 博主关于结论性的东西总结的是对的,但有一个细节值得说明:
    并不是说proxy_pass https://$http_host$request_uri;这个指令没有办法完成https协议的正向代理
    其实,如果你开了access日志你就会发现,当你curl --proxy 'ip:82' --location --request GET 'http://baidu.com'的时候,nginx内部最终还是帮你调用了https://baidu.com,但它并不是基于connect实现的调用,而是通过http协议进行了转发
    如果你直接curl --proxy 'ip:82' --location --request GET 'https://baidu.com'这样访问,那么nginx就会使用connect去完成https协议的相关准备,这时候nginx默认是不支持的,需要使用ngx_http_proxy_connect_module模块模块,如果未装的话,则响应400
    所以,综上所述,如果想偷懒使用nginx做https协议的正向代理,那么在访问目的地址的时候,如果默认是一个https的接口,那么你只需要curl http即可,让nginx使用http协议去转发到https上,这个nginx默认是支持的

    Nginx做代理服务器代理支持HTTPS请求

    首先大家应该会用到过nginx做http的代理,这种情况网络上搜一下大把大把的文章都按照步骤都能做出http的代理。 还有一种不需要安装模块时用http做https的代理。举...