Nginx代理iServer的HTTP协议成HTTPS
John iClient使用有报错HTTPS 访问HTTP服务跨域问题,亦或为了服务安全需使用HTTPS 加密通信,解决方案:一是直接对iServer的tomcat容器进行配置 HTTPS 连接;二是通过Nginx代理成HTTPS服务。方案一在iServer的帮助手册(http://support.sup
John
iClient使用有报错HTTPS 访问HTTP服务跨域问题,亦或为了服务安全需使用HTTPS 加密通信,解决方案:一是直接对iServer的tomcat容器进行配置 HTTPS 连接;二是通过Nginx代理成HTTPS服务。方案一在iServer的帮助手册(http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/Subject_introduce/Security/systemSecurity/HTTPS/HTTPS.htm)介绍得比较详细,在此就不做多余的说明了,博客主要介绍通过Nginx代理实现将iServer的HTTP转发成HTTPS协议服务。
Nginx代理实现将iServer的HTTP转发成HTTPS协议服务,而HTTPS 在HTTP 的基础下加入SSL,其加密的详细内容就需要 SSL,博客采用的OpenSSL去生成公钥和私钥。
安装OpenSSL工具
下载地址:http://slproweb.com/products/Win32OpenSSL.html
将安装好的OpenSSL配置道系统的环境变量中
生成公钥和私钥
1、创建私钥
openssl genrsa -des3 -out D:\nginxcert.key 2048
2、创建该私钥的证书
openssl req -new -x509 -key D:\nginxcert.key -out D:\nginxcert.pem -days 365
3、去除SSL的口令
注意:Nginx配置ssl的key带有密码,启动时会提示输入密码,且Nginx起不来,日志报错:
[alert] 30576#33832: the event "ngx_master_30576" was not signaled for 5s
a. 去除key密码
openssl rsa -in D:\nginxcert.key -out D:\nginxRSAcert.key
b. 重新生成证书
openssl req -new -x509 -key D:\nginxRSAcert.key -out D:\nginxRSAcert.pem -days 365
Nginx配置
将上一步生成的没有密码的key和证书copy到Nginx的config目录,nginx.conf配置如下:
# http配置
server {
listen 18099;
server_name 192.168.12.103;
location / {
proxy_pass http://192.168.12.103:8090;
}
}
# https配置
server {
listen 20443 ssl;
server_name 192.168.12.103;
ssl_certificate nginxRSAcert.pem;
ssl_certificate_key nginxRSAcert.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://192.168.12.103:8090;
}
}
结果验证
1、访问http监听的18099
1、访问https监听的20443
注意: https代理后可能会出现访问不了静态资源,且network上显示的静态资源的地址是http,需要将浏览器设置中“不安全内容“配置成允许,
其他设置
1、不显示静态资源
location ~ .*\.(js|css|jpg|png|json|svg)$ {
proxy_pass http://192.168.12.103:8090;
expires 30m;
}
2、端口变成80
location ~ .*\.(js|css|jpg|png|json|svg)$ {
proxy_pass http://192.168.12.103:8090;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
3、返回response中有代理前的iServer的地址
location / {
proxy_pass http://192.168.12.103:8090;
proxy_set_header Host $http_host;
}
4、配置负载均衡后,三维场景第二次login接口返回400
a. 拦截rest/realspace/login.json直返回到一个iServer上进行出去;
b. 只负载 .s3d瓦片数据,其他的不做处理;
c. 配置ip_hash.
更多推荐
所有评论(0)