Apache 2代理模式Spring引导和SSL



我有一台服务器在8080端口上运行Spring引导应用程序,我想将其连接到使用Ionic和Cordova构建的Android应用程序。

还有一个使用Angular 13构建的web应用程序,它是Android应用程序的基础。

当使用HTTPS连接时(使用Apache代理模式从端口443重定向到端口8080(,我尝试使用POST方法登录,一切都很好,但任何GET请求都被阻止,并出现错误403。

但是,如果我只使用8080端口直接使用HTTP进行连接,它就可以工作了。

我的CORS设置:

@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source =
new UrlBasedCorsConfigurationSource();
var config = new CorsConfiguration();
config.setAllowedOrigins(Arrays.asList("*"));
config.setAllowedMethods(Arrays.asList("*"));
config.setAllowedHeaders(Arrays.asList("*"));
config.setAllowCredentials(false);
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}

以及我在apache:中的主机配置

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.someserver.som
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.someserver.som [OR]
RewriteCond %{SERVER_NAME} =someserver.som
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

和我的代理模式:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.someserver.som
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias softcare.sy
SSLCertificateFile /etc/letsencrypt/live/softcare.sy/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/softcare.sy/privkey.pem
</VirtualHost>
</IfModule>

值得注意的是,当通过Insomnia进行连接时,即使使用SSL进行连接,连接也能正常工作并检索数据。

这个解决方案非常愚蠢。

我忘记将someserver.som添加到Angular JWT的允许域列表中。

它现在按预期工作

最新更新