不想将服务层URL暴露给外界

时间:2019-07-18 06:37:18

标签: java spring-boot nginx url-rewriting

我在服务层中有一个Spring Boot Application,在UI中有纯HTML(带有Jquery)。

tomcat服务器中正在运行Spring Boot,NGINX中部署了HTML。

假设我们有一个像 http://IP:port/getallUser 这样的URL,它可以检索所有用户。

现在,我不希望外界知道URL。由于某种安全原因而需要它。

从浏览器用户类型 http://IP:port/user 开始,应该这样工作,并且应该在NGINX和服务层之间进行转换/ URL转发/映射。

是否可能需要Java,NGINX或某些外部工具来实现这一目标?

http://IP:port/user 映射到 http://IP:port/getallUser

1 个答案:

答案 0 :(得分:0)

让您的 Java 应用程序侦听8080端口,然后在服务器外部无法访问您的应用程序。

现在,使用 Nginx ,您可以映射整个 Java 应用程序(是的,包括getAllUSers):

http {
    ...
    server {
        ...
        location /javaapp/ {
            proxy_pass http://127.0.0.1:8080/;
        }

为避免访问某些路径,您可以在之前重写特定规则:

location /javaapp/privateroute {
    return 404;
}

您可以将该真实路线映射到其他路线:

location /javaapp/publicroute {
    proxy_pass http://127.0.0.1:8080/privateroute;
}

这是实际配置测试:

  location /s/stesting {
    return 404;
  }
  location /s/publicstesting {
    proxy_pass http://127.0.0.1:3838/stesting;
  }
  location /s/ {
    proxy_pass http://127.0.0.1:3838/;
  }

此处,路径/s/stesting已被隐藏(404)并从/s/publicstesting重定向。

一个好的起点是nginx location documentation