服务代理与 Nginx 反向代理配合使用

发送反馈


首先,您需要进行 SuperMap iPortal 的注册服务代理配置,具体配置信息请参见:注册服务代理配置

接下来需要对 Nginx 反向代理服务器进行配置。

启动 nginx

  1. 解压 nginx 到指定目录
  2. 在 nginx 根目录下,通过以下命令启动 nginx:

start nginx

退出 nginx 命令如下:

nginx –s quit

配置 nginx

打开【nginx 安装路径】\conf\nginx.conf 文件,修改 http 节点下的 server 节点内容如下:

server {

        listen       80;

        server_name  www.myiportal.com;

        location /{

            proxy_pass   http://192.168.120.52:8090/;

            #proxy_set_header Host $host:80;

            proxy_set_header ProxyHost $host:80;

        }

        location ~*/iserver/services/ {

            proxy_pass   http://192.168.120.52:8095;

            #proxy_set_header Host $host:80;

            proxy_set_header ProxyHost $host:80;

        }

保存上述修改,重启 nginx 使其生效。重启命令如下所示:

nginx -s reload

如果需要配置多 iPortal 的反向代理,您可以通过在 nginx.conf 中配置多个 server 节点实现。

如果需要匹配多个服务地址,您可以通过在 nginx.conf 中配置多个 location 实现。

配置 iPortal

要实现注册服务代理后的服务地址也被反向代理,同时隐藏代理服务端口,还需对 iportal.xml 文件进行配置,位于【SuperMap iPortal 安装目录】\webapps\iportal\WEB-INF)文件夹下。在 iportal.xml 配置文件中的<serviceProxy>节点下增加<proxyServerRootUrl>节点,设置反向代理服务的根地址。由于代理服务地址中 Host 主机有两种显示方式:域名或 IP,因此,<proxyServerRootUrl>节点有两种配置方式:

方式一:域名形式

<serviceProxy>

    <enable>true</enable>  

    <port>8095</port>  

    <proxyServerRootUrl>http://www.myiportal.com[:port]</proxyServerRootUrl>  

    <httpConnPoolInfo>

      <maxTotal>20</maxTotal>  

      <defaultMaxPerRoute>2</defaultMaxPerRoute>

    </httpConnPoolInfo>

  </serviceProxy>

方式二:IP 形式,此配置会使代理服务地址根据用户当前的网络环境,动态显示 ip 地址。

<serviceProxy>

    <enable>true</enable>  

    <port>8095</port>  

    <proxyServerRootUrl>http://{ProxyHost}[:port]</proxyServerRootUrl>  

    <httpConnPoolInfo>

      <maxTotal>20</maxTotal>  

      <defaultMaxPerRoute>2</defaultMaxPerRoute>

    </httpConnPoolInfo>

  </serviceProxy>

配置完成后,重启 iPortal 服务。

注意:以上两种配置方式中,[:port]变量表示端口,填写代理后的服务监听端口即可,可以为空,为空默认为80端口。

访问服务

你可以通过访问反向代理后的服务地址,例如:http://192.168.120.40,其中,默认的80端口可以隐藏,即可获得与访问原服务器相同的内容。注册服务代理后的服务根地址也将变成:http://192.168.120.40,从而也隐藏了服务代理端口“8095”。

在实际的业务应用中,如果您想使用域名访问 iPortal 门户和服务,那么您需要将 Nginx 反向代理服务器的 ip 绑定为域名,然后通过该域名访问反向代理后的服务,即 http://www.myiportal.com,同时,注册服务代理后的服务根地址也将变成:http://www.myiportal.com。