使用 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。