0

我正在配置一个 Eureka 客户端应用程序,但注册端口始终为 80。

服务器配置是从启用了自动发现的 Eureka 获得的,当禁用自动发现时,端口注册正确。

应用程序的端口仅从命令行分配(--server.port=8080)并在所有其他属性文件(app.yaml、boostrap.yaml 和配置服务器 git repo)中删除

我注意到在这段代码中:

EurekaClientConfiguration.java

    if (port != 0 && instanceConfig.getNonSecurePort() == 0) {
        instanceConfig.setNonSecurePort(port);
    }

instanceConfig.getNonSecurePort() 永远不会为 0,因此,nonSecurePort 属性永远不会更改。

我必须在其他地方注册港口财产吗?

编辑添加一些细节:

我的意思是我的 bootstrap.yml 有以下几行:

cloud:config:discovery:enabled: true

yml 配置位于 github 存储库中,并且没有分配端口

该应用程序使用应用程序参数在端口 8082 中运行 --server.port=8082 但是当它在 Eureka 中注册时,端口始终是 80 而不是 8082

<port enabled="true">8082</port>
<securePort enabled="false">443</securePort>

这会导致每个基于功能区的调用都没有获得正确的 URL。

我注意到端口在初始化之后在这个处理程序事件中设置正确

EurekaClientConfiguration.java:

public void onApplicationEvent(EmbeddedServletContainerInitializedEvent event) {
   ...
   EurekaClientConfiguration.this.port = event.getEmbeddedServletContainer().getPort();

但是“正在运行”标志现在处于活动状态并且没有任何效果

非常感谢你的帮助

4

0 回答 0