在 Spring 中配置 VirtualHost 在 Windows 中引导应用程序嵌入 Tomcat 服务器

Configuring VirtualHost in Spring Boot application embedded Tomcat server in Windows

我有一个私人 Windows 服务器 运行 一个 Spring 引导 jar 文件,我可以通过 IP 地址访问它。我有几个可用的网站,我可以通过 IP 地址和过滤器访问这些网站。 (请注意,这是端口 54654 上的 运行,因为我还有其他 WEB API)。我在网上注册了一个新域名,我想通过域名访问服务器,该域名将重定向到我的服务器地址。

但问题是,浏览器显示的是 IP 地址而不是域名。我尝试使用屏蔽,但它没有像我预期的那样工作(它将网站放在 iFrame 中,我无法访问浏览器属性等)。我想像 www.abc.com 一样访问我的站点,它不应更改为 <host-ip-address>:<port>。我知道问题出在服务器端,不知道如何让它保留在域名中。我用 hosts.txt 文件尝试了一个新条目,但它似乎不起作用。

我已经在网上搜索了几个小时的解决方案,但找不到针对 Spring 引导的特定解决方案,在这种情况下,我不清楚 tomcat 中更改 VirtualHost 设置。 application.properties 文件中是否有任何设置?

所以这是我从这个需求中学到的东西的总结。感谢@PiotrP.Karwasz 的长期支持。

  1. 您可以运行您的服务器在任意端口但是域名提供商只能指向默认端口(80)

  2. 如果您在编辑 A 记录后更改转发设置,您的域将移至停放状态(停放是指您的域对访问它的其他人显示为“已占用”并且它不会指向您的 A 记录的 IP 地址)。在这种情况下,你必须重新修改你的A记录。

  3. 您可以使用 nginx 配置从 http 端口 (80) 到服务器 运行 所在的任何端口的重新路由。我的 nginx 配置:

    server {
    listen 80;
    server_name <my-site>.com;
    
        location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:<my-port>";
        }
    }
    
  4. 域名更改需要一段时间才能反映在DNS中(24-48小时),您可以通过清除缓存或隐身window(无痕浏览)来查看。