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

标签 java spring-boot nginx url-rewriting

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

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

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

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

从浏览器用户类型http://IP:port/user到NGINX和服务层转换/ URL转发/映射之间的某个地方,应该这样工作。

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

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

最佳答案

然后,让您的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

关于java - 不想将服务层URL暴露给外界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57088400/

相关文章:

php - 出于安全原因,在执行 composer 命令时已禁用 putenv

apache - 具有使用自定义 session 端点的连接池的反向代理?

java - 如何将数组列表左移 2 个位置?

java - 为我的 java 对象创建一个 xml 文件

javascript - 从 JavaScript 调用 Java 代码(Spring boot)

spring-boot - JBoss EAP 7.1 + Spring Boot 应用程序 : No validator could be found for constraint 'javax.validation.constraints.NotBlank'

java - Spring 事务管理不适用于 Spring Boot + MyBatis?

java - 未找到资源 - Styles.xml 和 Theme.AppCompat.Light

java - 无法在 Eclipse 中使用库制作可执行 JAR 文件

asp.net-mvc-2 - nginx/mono 2.8 上的 ASP.Net MVC 2