使用 AJP 时会话无效

使用 AJP 时会话无效

我有以下设置: Apache 运行前端(AngularJS)
Tomcat 7 运行后端(Spring MVC,Spring Security)

Apache 配置

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    LoadModule proxy_module libexec/apache2/mod_proxy.so
    LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so

    ProxyRequests     off
    ProxyPreserveHost on

    ProxyPass         /api/  ajp://132.230.166.21:8009/OntoRais/api/
    ProxyPassReverse  /api/  ajp://132.230.166.21:8009/OntoRais/api/

    Alias /rais "/home/bwright/Repositories/ontology-toolchain/WebClient"
    <Directory "/home/bwright/Repositories/ontology-toolchain/WebClient">
        Order allow,deny
        Allow from all
        Require all granted
    </Directory
</VirtualHost>

可以看出,我使用 ajp 协议将所有 api 调用传递给 tomcat 服务器。

Tomcat 配置(Server.xml)

与全新安装相比,除了以下之外没有任何变化:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  enableLookups="false"/>

现在,当我尝试通过前端访问 tomcat 资源时,出现 403

HTTP Status 403 - Full authentication is required to access this resource accessing /OntoRais/api/user

在 tomcat 服务器日志中我得到

13:25:10.034 [ajp-bio-8009-exec-7] DEBUG o.s.s.w.s.SessionManagementFilter - Requested session ID ED0779DC647DEE3C58DEA7059C260594 is invalid. 

当通过 bowser 直接访问 tomcat 服务器的相同资源时, http://localhost:8080/OntoRais/api/user一切正常。

编辑

需要澄清的是,132.230.166.21 与 localhost 是同一台机器。我将配置更改为 localhost,没有任何变化。

希望这里有人可以帮助我,谢谢本尼迪克特

答案1

问题是在添加后设置 SESSIONID

ProxyPassReverseCookiePath /OntoRais /

到 apache 设置,一切正常。

相关内容