ArcGIS Server HTTP与HTTPS端口(6080/6443)使用及Nginx升级HTTPS时的问题与解决

目录

前言

一、ArcGIS Server中http与https

二、nginx中升级https的配置项

三、ArcGIS Server中设置安全策略

四、问题解决的关键点

五、总结


前言

本文记录了在项目 Web 平台从 HTTP 协议升级到 HTTPS 协议过程中,解决 ArcGIS Server 服务无法访问的问题

一、ArcGIS Server中http与https

ArcGIS Server官网中对http与https的描述如下:

HTTPS 端口 6443

默认情况下,ArcGIS Server 仅通过端口 6443 进行通信。 确保防火墙允许通过此端口进行 HTTP 通信。 除非您已禁用直接管理访问权限(路由流量改为经由 ArcGIS Web Adaptor),否则您的用户将能够通过端口 6443 访问服务器。

HTTP 端口 6080

默认情况下,ArcGIS Server 仅支持 HTTPS 通信,且不允许通过端口 6080 进行通信。 管理员可以在 ArcGIS Server 中更改此设置,以允许通过端口 6080 进行 HTTP 纯文本通信,但是此选项安全性较低。

二、nginx中升级https的配置项

为了支持 HTTPS,Nginx 的配置如下:

  1. 监听端口:监听 18085 端口,并启用 SSL。

  2. 证书配置:配置 SSL 证书文件(ssl_certificate)和私钥文件(ssl_certificate_key)。

  3. SSL 会话缓存与超时:设置会话缓存和超时时间。

  4. 加密算法与协议:指定安全的加密算法和协议版本。

  5. HTTP 到 HTTPS 重定向:将 HTTP 请求重定向到 HTTPS,确保请求方法不变。

  6. ArcGIS Server 代理配置:通过 Nginx 将请求代理到本地的 ArcGIS Server HTTPS 端口(6443),并设置相关的请求头,确保传递正确的客户端信息和协议。具体配置如下:

server {
    listen 18085 ssl;
    #ssl_certificate:请填写证书文件的相对路径或绝对路径,证书文件包含服务器的公钥、服务器信息以及证书颁发机构(CA)的数字签名。证书文件用于向客户端证明服务器的身份,并提供服务器的公钥。可以是.pem格式的文件,也可以是.crt格式的文件。
    ssl_certificate      cert/server.pem;
    #ssl_certificate_key:请填写私钥文件的相对路径或绝对路径。私钥文件包含与证书文件中公钥相对应的私钥。私钥用于对数据进行解密和签名操作,必须严格保密。可以是.pem格式的文件,也可以是.key格式的文件
    ssl_certificate_key  cert/server.key;
    #ssl_session_cache:可选配置,设置了SSL会话缓存的类型和大小。shared=表示在所有工作进程之间共享缓存。SSL=是缓存的名称。1m=表示缓存的最大大小为1兆字节。启用SSL会话缓存可以提高性能,因为它允许客户端在后续连接中重用之前协商的会话参数,避免了重新进行完整的 SSL/TLS 握手过程。
    ssl_session_cache    shared:SSL:1m;
    #ssl_session_timeout:可选配置,设置了SSL会话缓存的超时时间为5分钟。
    ssl_session_timeout  5m;
    #ssl_ciphers:可选配置,指定了SSL/TLS握手过程中允许使用的加密算法的优先级顺序。它使用了一个加密算法的列表,按照优先级从高到低排列。建议使用安全性较高的加密算法,并禁用一些不安全的算法(如 NULL、aNULL、MD5、ADH、RC4 等)。
    ssl_ciphers  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    #ssl_protocols:可选配置,指定了允许使用的SSL/TLS协议版本。建议只启用安全的协议版本,如 TLSv1.1、TLSv1.2 和 TLSv1.3,禁用不安全的 SSL v2 和 SSL v3。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    #ssl_prefer_server_ciphers:可选配置,这个配置指定了在SSL/TLS握手过程中,优先使用服务器端指定的加密算法,而不是客户端提供的加密算法。这样可以确保使用更安全的加密算法。
    ssl_prefer_server_ciphers on;
    #让http请求重定向到https请求,不改变请求的方法(如post还是post)。301或302重定向时,可能会改Post为Get,而307或308时则不会。
    error_page 497 307 https://$http_host$request_uri;
    #arcgis server https模式需要先把arcgis server配置为https,再把转发协议变成https和6443端口。https://www.cnblogs.com/googlegis/p/14281562.html
    #登录到 ArcGIS Server 管理员目录。URL 通常为:https://gisserver.domain.com:6443/arcgis/admin。
    #导航到安全性 > 配置 > 更新。
    #针对协议参数,选择仅 HTTPS/仅HTTP/Http和Https 选项并单击更新。
    #验证是否无法通过 HTTP 访问 ArcGIS Server 资源。
    location ^~ /arcgis {
        proxy_pass https://127.0.0.1:6443;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr; #X-Real-IP表示客户端真实的IP
        proxy_set_header X-Forwarded-Proto $scheme; #X-Forwarded-Proto表示客户端真实的协议(http还是https);
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #X-Forwarded-For这个Header和X-Real-IP类似,但它在多层代理时会包含真实客户端及中间每个代理服务器的IP。
        proxy_redirect off;
        proxy_next_upstream error timeout invalid_header http_500 http_504 http_404;
    }
}

 其中,ArcGIS Server相关的配置项如下:

    location ^~ /arcgis {
        proxy_pass https://127.0.0.1:6443;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr; #X-Real-IP表示客户端真实的IP
        proxy_set_header X-Forwarded-Proto $scheme; #X-Forwarded-Proto表示客户端真实的协议(http还是https);
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #X-Forwarded-For这个Header和X-Real-IP类似,但它在多层代理时会包含真实客户端及中间每个代理服务器的IP。
        proxy_redirect off;
        proxy_next_upstream error timeout invalid_header http_500 http_504 http_404;
    }

三、ArcGIS Server中设置安全策略

  1. 登录管理员目录:通过 http://localhost:6080/arcgis/admin/login 登录。

  2. 更新安全配置:导航到 security > config > update,选择“HTTP and HTTPS”协议。ArcGIS Server HTTP与HTTPS端口(6080/6443)使用及Nginx升级HTTPS时的问题与解决_第1张图片

  3. 重启服务器:更新设置后,服务器将重启以应用新的安全策略。

 

四、问题解决的关键点

  1. 协议一致性:确保 Nginx 和 ArcGIS Server 的协议配置一致,即 Nginx 代理的协议和端口与 ArcGIS Server 的配置匹配。

  2. 请求头配置:通过 Nginx 的 proxy_set_header 配置,传递正确的客户端信息(如 IP、协议等),避免因信息丢失导致的访问问题。

  3. 安全策略调整:在 ArcGIS Server 中启用 HTTPS 并禁用 HTTP,确保通信的安全性。

 

五、总结

通过上述步骤,成功解决了项目 Web 平台升级 HTTPS 后 ArcGIS Server 服务无法访问的问题。关键在于确保 Nginx 和 ArcGIS Server 的配置一致,并正确传递请求信息。同时,通过调整 ArcGIS Server 的安全策略,确保了通信的安全性。

 

 

你可能感兴趣的:(arcgis,http,https,网络协议,arcgis,nginx)