如何用 Nginx 方向代理 HTTPS 到 HTTP?

2017-04-11 15:18:33 +08:00
 Exin

想通过自己的主机代理一个第三方 HTTP 服务

部分 nginx 配置如下,现在访问 https://mydomain.com 提示 This site can ’ t provide a secure connectionERR_SSL_PROTOCOL_ERROR

求解

server {
    listen 443;
    server_name mydomain.com;

    ssl on;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    ssl_prefer_server_ciphers on;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    location / {
        proxy_pass          http://anotherdomain.com;
        proxy_set_header    Host             $host;
        proxy_set_header    X-Real-IP        $remote_addr;
        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header    X-Client-Verify  SUCCESS;
        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
        proxy_read_timeout 1800;
        proxy_connect_timeout 1800;
    }
}
3996 次点击
所在节点    问与答
8 条回复
Kilerd
2017-04-11 15:46:38 +08:00
证书链没弄好吧。 是不是忘记添加 CA 证书了。
Exin
2017-04-11 15:52:06 +08:00
@Kilerd 不做反向代理设置的话可以用上述配置中的证书访问,应该不是这个问题
nfroot
2017-04-11 17:00:11 +08:00
目测这行是多余的,或者说不理解为什么你要设置这个。
proxy_set_header Host $host;
既然目标站是 http,那么这些请求也是没必要的吧
proxy_set_header X-Client-Verify SUCCESS;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
Exin
2017-04-11 17:33:36 +08:00
@nfroot 直接 SO 复制来的...注释掉它们没什么变化
Exin
2017-04-11 18:48:19 +08:00
才注意到我把标题里的“反向”打成了“方向”😓
Exin
2017-04-11 19:13:12 +08:00
搞定,只保留了`proxy_pass`和两个 timeout 的配置项
paranoiagu
2017-04-11 19:21:15 +08:00
后端是 tomcat 吗?如果是,其它几句还是酌情要保留的,而且 tomcat 也要配置的。
Exin
2017-04-11 19:39:51 +08:00
@paranoiagu #7 不是自己的后端,是第三方的,实现方式未知。刚刚测试了下功能,跑的挺好的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX