【问题标题】:Spring Boot configure a Domain/Host to access in a www.website.com fashionSpring Boot 配置域/主机以 www.website.com 方式访问
【发布时间】:2015-06-12 05:07:31
【问题描述】:

我有一个 Spring Boot 应用程序。通常我在 PaaS 实例上运行我的 Spring 应用程序,并且从那里配置一个域名很容易,但是我在一个虚拟专用服务器上运行它,而且我一辈子都无法弄清楚如何运行我的 spring boot所以它可以通过域名访问。

我已经更改了我的 DNS 设置,所以它指向我的虚拟专用服务器,这个 VPS 还运行其他一些基于 apache 的静态网站,我非常确信我的 DNS 设置是正确的。

我的 Spring Boot 应用程序正在使用 spring-boot-starter-tomcat 运行,应用程序部署良好,我可以获取我的 .war 文件并在服务器上使用 java -jar myApplication.jar 部署它。

也可以通过在浏览器上写入my.server.ip:8080 来远程访问该应用程序。

但是,我在谷歌上搜索了很多,无法弄清楚如何配置 Spring Boot 以便它使用我的域名,以便我可以以标准方式访问该网站:www.mywebsite.com,甚至更好还要添加别名,这样mywebsite.comwww.mywebsite.com 都有效。

谁能指出我正确的方向?我知道这个can be done in Tomcat,但我不知道如何配置它。

由于这是一个 Spring Boot 应用程序,我没有 .xml 文件,我的 Spring Boot 配置位于 application-prod.yml 文件中,我使用的唯一 .xml 文件是 pom.xml 本身。

任何帮助将不胜感激。

【问题讨论】:

    标签: tomcat nginx


    【解决方案1】:

    由于缺乏回应,我决定采用 dunni 提出的方法。

    这是我使用 Nginx 的方法:

    我去了一个干净的Windows安装nginx/conf/nginx.conf

    然后我改变了一些东西,这是我完整的nginx.conf 文件:

    nginx.conf

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        include C:/path-to-nginx/nginx/conf/sites-enabled/*.conf;
    }
    

    然后我在nginx/conf/sites-enabled 中创建了文件夹sites-enabled

    我继续在文件夹sites-enabled 中创建mywebsite.conf

    mywebsite.conf

    server {
        server_name  mywebsite.com;
    
        location / {
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8080;
        }
    }
    

    此时,如果一切正常,您应该能够访问您的 Tomcat 应用程序!我使用了很多参考资料,所以我将它们全部放在下面:


    http://www.mkyong.com/nginx/nginx-apache-tomcat-configuration-example/

    http://javadeveloper.asia/configuring-nginx-in-front-of-tomcat-or-other-java-application-server

    http://nginx.org/en/docs/windows.html

    nginx Windows: setting up sites-available configs

    干杯。

    【讨论】:

    • 我以为这会破坏我在同一个 VPS 上托管的网站,但事实并非如此!太棒了!
    • 您好 Erick,您需要以 root 权限启动 apache 才能使用端口 80 和 443。要将 http 重定向到 https,您可以查看此处。但是 HTTP/2 不能使用 spring boot 1.5 激活。这是链接。memorynotfound.com/spring-boot-configure-tomcat-ssl-https
    • 但是,如果您还想要 HTTP/2 功能,那么请切换到 Undertow 服务器而不是 Tomcat。需要注意的另一点是 undertow 具有更好的吞吐量和低内存,这是 Tomcat 的一大优势。给你stackoverflow.com/a/54908727/7538821
    • 如果共享主机不是您的情况,那么您可以使用嵌入式服务器,而不是设置独立的 tomcat 服务器,因为它们也是生产级的。
    【解决方案2】:

    从技术上讲,您可以在 Tomcat 中做到这一点。但是,要使用端口 80 或 443 启动应用程序,您必须以 root 权限运行它。因此,我建议将 Apache HTTP 或 Nginx 服务器配置为反向代理(您可以找到该主题的许多教程)。

    【讨论】:

    • 我可以更改端口,如果您能详细说明如何使用 Tomcat 本身进行更改,我将不胜感激。我也有 root 访问权限,所以这不是问题。
    • 问题在于没有 root 访问权限。但是您永远不应该以 root 权限启动您的应用程序。如果您有安全漏洞,攻击者可以使用应用程序的权限执行命令,因此如果应用程序以 root 权限运行,则攻击者在您的服务器上也具有 root 权限。
    • 很公平!跟着你的方法去了。这一切都有效,没有抱怨。祝你好运!
    猜你喜欢
    • 2015-09-24
    • 2015-05-03
    • 1970-01-01
    • 2019-05-28
    • 2017-02-24
    • 2022-01-12
    • 2018-11-17
    • 2020-03-09
    • 2014-01-01
    相关资源
    最近更新 更多