当前位置: 首页 > 知识库问答 >
问题:

nginx-用于Spring Boot应用程序的多个反向代理(启用spring security)

长孙景焕
2023-03-14

我有三个Spring Boot应用程序在端口8080,8081,8082上的嵌入式tomcat上运行。

我试图为他们配置反向代理,当点击url时,我得到了来自Spring security的401错误。

我将nginx配置如下:

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {

        listen       80;
        server_name  localhost;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #also tried $remote_addr;

        location /first {
            proxy_pass http://localhost:8081;
        }
        location /second {
            proxy_pass http://localhost:8080;
        }
        location = /third {
            proxy_pass http://localhost:8082;
        }

    }

}

我试图访问的url是http://localhost/second/这给我错误说有一个意外的错误(type=未授权,status=401)。访问此资源需要完全身份验证

当尝试访问时http://localhost:8080/swagger-用户界面。html给我一个404错误。

当试图访问http://localhost:8080/swagger-ui.html显示我斯瓦格的预期页面。

共有2个答案

尚阳炎
2023-03-14

问题是nginx正在浏览器上缓存页面,因此对nginx进行了任何修改。conf文件未在浏览器上反映。这是我的nginx.conf的最终工作版本

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

    sendfile        on;
    keepalive_timeout  65;
    gzip  on;

    server {
        listen       80;
        listen       [::]:80;
        server_name  localhost;

        access_log  logs/host.access.log  main;
        
        location / {
           root  "D:/projects/mySimpleProject/build";
           index index.html index.htm;
        }

        location /first/ {
            proxy_pass http://localhost:8080/;
        }
        location /second/ {
            proxy_pass http://localhost:8081/;
        }
        location /third/ {
            proxy_pass http://localhost:8082/;
        }
        
        error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

对于不知道的用户,请重新启动Nginx服务器,并在每次更改Nginx.conf时按ctrl F5刷新浏览器

沈德寿
2023-03-14

如果你还在寻找答案,这就是我如何设法让它工作:

> < li >除了让每个spring-boot-app在不同的端口上运行,还要确保每个spring-boot-app都有唯一的上下文路径。看一些例子!如果你不熟悉的话。 < li>

只需将spring-boot-app的上下文路径与nginx的匹配即可,如下所示:

location /first {
    proxy_pass http://localhost:8081/first;
}
location /second {
    proxy_pass http://localhost:8080/second;
}
location /third {
    proxy_pass http://localhost:8082/third;
}

我没有测试你的nginx配置,但是如果一切都配置正确,上面的步骤可能是你正在寻找的。

 类似资料:
  • 我有一个部署在野蝇10.1应用程序服务器上的webapp。此webapp被监听:http://localhost:8080/app-profile-jsp/(1) 我成功安装了nginx。服务器已成功安装,我测试提供静态网页和图像。 现在我想配置nginx从“http://www . fri zio . local”(2)URL访问web应用程序。我在/etc/hosts中配置了这个地址。 我在n

  • Nginx的配置文件如下: server { listen 80; #此处应该配置你的域名: server_name doc.iminho.me; charset utf-8; #此处配置你的访问日志,请手动创建该目录: access_log /var/log/nginx/webhook.iminho.me/access.log

  • 在主机上,端口4012上有docker容器,而在docker容器中,webapp运行在端口3000上(0.0.0.0:4012->3000/tcp),因此要访问webapp,只需访问http://hostname:4012,网页显示良好。我希望能够从浏览器转到http://hostname/metrics来运行相同的网页。 它不像获取index.html那样将/metrics追加到资产中...我在

  • 问题内容: 我有一个在Docker外部在端口5000上运行的应用程序。我试图通过Dockercompose在nginx中运行反向代理,但无法与主机的端口5000通信。在我的docker-compose.yml文件中,我具有: 当我尝试运行此命令时,我得到: 如果我注释掉,我得到: 如何从Docker Nginx容器连接到主机中已运行的应用程序? 编辑: 我的nginx.conf文件 当我尝试卷曲l

  • 我想在代理之后提供Restful API,但我不知道如何将请求重定向到Spring Boot应用程序,以便可以使用域名访问它。 我的Spring Boot应用程序使用spring-boot-starter-tomcat运行,应用程序部署良好,我可以在服务器上使用java-jar myApplication.jar部署它。 该应用程序还可以通过写入远程访问https://1.2.3.4:8090在浏

  • 主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过