反向代理对接

1.反向代理配置

反向代理服务器上,增加 X-Forwarded-For  X-Forwarded-Proto 两个 header 信息,传递真实的请求 IP 和真实的请求协议。

请将xxx.xxx.xxx.xxx替换成实际idp的服务器地址。

      location /{
        proxy_pass      http://xxx.xxx.xxx.xxx:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
      }

2.tomcat 配置

[root@www ~]# vi /usr/libexec/tomcat9/conf/server.xml
#在最后</Engine>标签里面,请在127.0.0.1|0:0:0:0:0:0:0:1后面增加代理服务器的ip地址,例如:127.0.0.1|0:0:0:0:0:0:0:1|xxx.xxx.xxx.xxx,如果支持ipv6,需要把ipv6和ipv4地址同时加上
    <Valve className="org.apache.catalina.valves.RemoteIpValve"
           internalProxies="127.0.0.1|0:0:0:0:0:0:0:1"
           remoteIpHeader="x-forwarded-for"
           protocolHeader="x-forwarded-proto"
    />

然后开放服务器的 8080 端口,以便于反向代理服务器访问 tomcat

[root@www ~]# firewall-cmd --add-port=8080/tcp --permanent
[root@www ~]# firewall-cmd --reload

为了安全考虑,也可以只对代理服务器开放8080端口,请将xxx.xxx.xxx.xxx替换成代理服务器ip地址,如果有ipv6地址,请也针对防火墙放开

#针对ipv4地址
[root@www ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="xxx.xxx.xxx.xxx" port protocol="tcp" port="8080" accept"
#针对ipv6地址
[root@www ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv6" source address="xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" port protocol="tcp" port="8080" accept"
[root@www ~]# firewall-cmd --reload

3. 关闭防火墙上相应的80和443端口

[root@www ~]# firewall-cmd -remove-service=https --permanent
[root@www ~]# firewall-cmd -remove-service=http --permanent
[root@www ~]# firewall-cmd --reload

如果撤掉反向代理的话,只需要再将80和443端口开启,即可使用本机的nginx提供服务

[root@www ~]# firewall-cmd -add-service=https --permanent
[root@www ~]# firewall-cmd -add-service=http --permanent
[root@www ~]# firewall-cmd --reload

注意:使用反向代理后,https证书在反向代理上配置即可,IdP上不用再配置


版权所有©北京大学计算中心