使用 Nginx 代理 HTTPS 加密的 iServer 的流程如下:

先按照 使用 APR 配置 的介绍配置开启 HTTPS,然后配置 Nginx 代理新开启的窗口,示例如下:

nginx.conf

server {

  listen       8000 ssl;

  server_name www.myiserver.com;

  ssl_certificate     私钥的证书文件位置;

  ssl_certificate_key 私钥文件位置;

  ssl_session_cache   shared:SSL:1m;

  ssl_session_timeout 5m;

  ssl_ciphers HIGH:!aNULL:!MD5;

  ssl_prefer_server_ciphers on;

  location / {

    proxy_pass   http://172.16.120.86:8090;

    proxy_set_body $request_body;

    proxy_set_header Accept-Encoding "";

    proxy_set_header Host $host:8000;

    sub_filter_once off;

    sub_filter_types *;

    sub_filter 'http://$server_name:8000/iserver' 'https://$server_name:8000/iserver';

  }

}

  • listen:ssl 协议的监听的端口

  • server_name:用于设置代理后的服务器名称,一般使用代理服务器的域名。

  • ssl_certificate:私钥的证书文件位置

  • ssl_certificate_key:私钥文件位置

  • ssl_session_cache:存储 session 参数缓存的类型和大小

  • ssl_session_timeout指定客户端可重用会话参数的时间

  • proxy_pass:用于设置需要转发的 GIS 服务地址,可以是 IP 地址形式,也可以是域名形式

  • proxy_set_header:设置转发请求的请求头,只需要设置其中的服务地址。如果不设置请求头中的服务地址,则访问反向代理后的服务时,服务中的页面链接还是指向原始的 GIS 服务器而不是当前地址。

  • sub_filter_once:是否只替换一次

  • sub_filter_types:需要替换的类型

  • sub_filter:替换掉返回给客户端数据的指定内容,第一个参数为原始内容,第二个参数为期望替换的内容。因为 iServer 的静态资源链接还是 http,而访问的是 https,有跨域的问题,因此采用 sub_filter 将 http 替换成 https。