NGINX 位置 - 如何 proxy_pass POST 请求

问题描述 投票:0回答:1

架构介绍:

  • 我有一个在 ubuntu 云服务器上运行的 Spring Boot Rest API。
  • 我在同一台服务器上安装并运行了 NGINX。
  • 我使用 NGINX 作为反向代理来定位此 API。

问题:

  • 当我从本地浏览器发出 POST 请求时,返回 403。
  • 它可以很好地处理 GET 请求。

配置:

server {
       listen 443 ssl;

       server_name mydomain.com;

       root /var/www/my-domain;
       index index.html;

       ssl_certificate /etc/nginx/ssl/certificate.cer;
       ssl_certificate_key /etc/nginx/ssl/server.key;
       ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
       location / {
               try_files $uri $uri/ =404;
       }

       location /api/auth/ {
         proxy_pass http://localhost:8085/;
       }
}

从我的本地终端卷曲:

curl -i -X POST https://example.com/api/auth/account/login -H 'Content-Type: application/json' -d '{"email":"aslogin","password":"password"}'
HTTP/1.1 403 
Server: nginx/1.24.0 (Ubuntu)
Date: Wed, 16 Oct 2024 23:17:12 GMT
Content-Length: 0
Connection: keep-alive

备注:当我的后端刚刚启动时,当我第一次从本地终端触发curl时,会出现这三行

2024-10-16T23:17:12.666Z  INFO 268468 --- [nio-8085-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-10-16T23:17:12.667Z  INFO 268468 --- [nio-8085-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-10-16T23:17:12.669Z  INFO 268468 --- [nio-8085-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 m

但是我没有更多关于出了什么问题的信息(例如cors问题)。那么哪里可以找到更多日志呢?

spring-mvc nginx post request reverse-proxy
1个回答
0
投票

工作解决方案:

location /api/auth/ {
   rewrite ^/api/auth(.*) $1 break;
   proxy_pass http://localhost:8085/;
}

关于这个正则表达式: ^/api/auth(.) 表示每个以 /api/auth(.) 开头的字符链 其中(.*)代表一组任意字符。 $1 代表 caractere 组。

示例 /api/auth/帐户/登录:

  • 以 /api/auth 开头
  • (.*) = /帐户/登录
  • 所以 $1 = /帐户/登录
© www.soinside.com 2019 - 2024. All rights reserved.