我遇到了一个我们的Spring Boot应用程序问题。我们在端口8443上使用https运行它,并且一切正常。现在,我们正在与外部支付处理器建立集成,并且他们要求我们的应用程序在端口443上具有回调终结点。
一些研究告诉我,不允许部署监听端口号低于1024的Spring Boot应用程序。我在此问题上发现的线程通常说“使用1024以上的端口号”,并且张贴者走了 过得开心。我已经有了,需要找出使用端口443的解决方案。
有人有什么建议吗?我可以通过为回调端点构建一个Apache代理来解决这个问题吗?
我们在同一服务器上拥有使用Apache2和端口443的Web应用程序,因此Boot应用程序需要与之共存。
答案 0 :(得分:0)
有几种Web服务器或反向代理解决方案,它们可以侦听端口443并将您的请求路由到Spring Boot应用程序服务器的端口8443。
除了Apache2,还有:
可能还有更多,但到目前为止我使用的那3个。
如果您的应用程序在云中运行-云提供商通常还会提供可以完成此任务的服务,例如AWS ELB。
答案 1 :(得分:0)
好的,我设法用一种非常简单而优雅的方式自己解决了这个问题。在此过程中,我还解决了必须通过URL中的端口号调用Spring Boot应用程序的问题,这使我很烦。
我发现了这个线程:Spring Boot with embedded Tomcat behind Apache proxy
在其中,解决方案已大致列出。我必须激活三个apache2 mod:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers
我将这些行添加到我的Apache2 vhost配置文件中,就在VirtualHost
标签中的ServerName下:
SSLProxyEngine on
ProxyPass / https://127.0.0.1:8443/
ProxyPassReverse / https://127.0.0.1:8443/
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443
ProxyPreserveHost On
8443是Spring Boot应用程序使用的端口号,如server.port
属性中所配置。
作为奖励,这也意味着我们不再需要在防火墙中打开启动应用程序使用的端口。