首先由一个内部 openshift 集群中的 docker registry URL,通过 openshift 的 Route 功能生产,在内部可用。
即内部地址 https://docker-registry-default.apps.vpclub.io ,自签名不受信任
现在需要将其放到公网上访问,通过另一个域名,在外部 NAT 443 端口的内部主机上做反代理,配置如下:
结果无法访问 https://registry.vpclub.cn
尝试了多种方法均没解决,求指点!
1
a1044634486 2017-09-19 12:43:02 +08:00
应该无解吧。浏览器就不信任你这个 ca 机构
|
2
aqqwiyth 2017-09-19 13:29:13 +08:00
典型的 HTTPS 劫持.
第一步 nginx 本地弄一个私钥主要是反代 HTTPS, 客户端(外网用户)信任 nginx 的证书 第二步 nginx proxy 目标地址的 HTTPS, 需要装载目标地址的证书 proxy_ssl_xxxx http://nginx.org/en/docs/http/ngx_http_proxy_module.html 你已经做了第一步 |
3
Niphor 2017-09-19 13:37:43 +08:00
```
proxy_ssl_trusted_certificate ...'; proxy_ssl_verify off; ``` 不过话说回来,干嘛不在原来的 server_name 里加个 registry.vpclub.cn ,何必再套个 nginx... |
4
Niphor 2017-09-19 13:40:17 +08:00
而且 这样 你这个 nginx 承担了 解密 又加密 ssl,直接配个转发不更好...
|
5
jiewuza 2017-09-22 14:52:18 +08:00
我也有类似的需求,但是看了楼上几位,有点困惑,到底能不能实现?
我这边的应用是这样的: 从第三方(比如天气服务,具体名称就不给了,以免广告嫌疑)获得了 appid 想让用户访问我自己的后台时,通过 nginx 代理(设置 appid 等头部)直接访问第三方 我的服务和第三方服务都需要 https 访问 我目前这样的设置是不行的,直接 301 回来了 location /test/ { proxy_pass https://xxx/path/to/api; proxy_set_header X-Real-IP $remote_addr; proxy_set_header app_id "..."; proxy_set_header app_key "...." proxy_set_header Content_Type "application/json"; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host "xxx.xxx.com"; } |