首先由一个内部 openshift 集群中的 docker registry URL,通过 openshift 的 Route 功能生产,在内部可用。
即内部地址 https://docker-registry-default.apps.vpclub.io ,自签名不受信任
现在需要将其放到公网上访问,通过另一个域名,在外部 NAT 443 端口的内部主机上做反代理,配置如下:
结果无大带宽服务器法访问 https://registry.vpclub.cn
尝试了多种方法均没解决,求指点!
- 内部地址必需用域名才能访问
- 外部的 HTTPS 证书是受信任的,各位可以尝试访问
应该无解吧。浏览器就不信任你这个 ca 机构
典型的 HTTPS 劫持.
第一步
nginx 本地弄一个私钥主要是反代 HTTPS, 客户端(外网用户)信任 nginx 的证书
第二步
nginx proxy 目标地址的 HTTPS, 需要装载目标地址的证书 proxy_ssl_xxxx http://nginx.org/en/docs/http/ngx_http_proxy_module.html
你已经做了第一步
```
proxy_ssl_trusted_certificate ...';
proxy_ssl_verify off;
```
不过话说回来,干嘛不在原来的 server_name 里加个 registry.vpclub.cn ,何必再套个 nginx...
而且 这样 你这个 nginx 承担了 解密 又加密 ssl,直接配个转发不更好...
我也有类似的需求,但是看了楼上几位,有点困惑,到底能不能实现?
我这边的应用是这样的:
从第三方(比如天气服务,具体名称就不给了,以免广告嫌疑)获得了 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";
}