我有一个apache web服务器,配置如下:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin webmaster@elcor.com
ServerName elcor.com
ServerAlias www.elcor.com
ProxyPass / http://localhost:8080/home.html
ProxyPassReverse / http://localhost:8080/html
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /var/www/html/elcor.com/public_html
# Log file locations
LogLevel warn
ErrorLog /var/www/html/elcor.com/log/error.log
CustomLog /var/www/html/elcor.com/log/access.log combined
</VirtualHost>
当我直接用 http://localhost:8080/home.html
,一切都很好,但是当我通过apacheweb服务器进行操作时( http://elcor.com
)所有的公众匹配者( *.css
, *.js..
)我在springboot中定义了不再公开的安全文件,它会重定向这些文件的fo登录。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(publicMatchers()).permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.defaultSuccessUrl("/joan.html")
.failureUrl("/login.html?error").permitAll()
.and()
.logout().permitAll();
}
1条答案
按热度按时间xzlaal3s1#
由于spring应用程序也在为静态资源js和css提供服务,因此您需要以允许您将通信路由到应用程序的方式配置apache,以便找到这些资源。
请在apache配置中尝试以下更改:
如您所见,这个想法是将web服务器根路径中接收到的所有流量路由到spring应用程序。
我认为这个改变对解决你的问题有帮助。
另外,您可以指示Spring Security 忽略这类资源。您可以通过重写以下方法在spring安全配置类中实现此功能: