网站和接口在同一个服务器接口无法访问nginx该如何配置?

作者站长头像
站长
· 阅读数 12

前端和服务端都部署在同一个服务器上,使用nginx进行转发接口的请求,但是报错,

[error] 15880#15880: *57 connect() failed (111: Connection refused) while connecting to upstream, client: 172.8.203.147, server: , request: "GET /v1/user/list?pageIndex=0&pageSize=18&text= HTTP/1.1", upstream: "https://127.0.0.1:3000/v1", host: "www.test.cn", referrer: "https://www.test.cn/"

我请求的连接是如下

https://www.test.cn/v1/user/list?pageIndex=0&pageSize=18&text=

我想的是,通过test.cn域名会访问到服务器默认端口上,然后让nginx转发到对应的服务端口上,比如我的配置是转到了3000端口上

location \v1{
 proxy_pass "https://127.0.0.1:300/v1";
}

结果就报上面的错误,这个该如何解决,或者我这种部署方式咋弄比价好呢?


我的配置如下:

location ~* /v1/ {
                         set $backend "https://127.0.0.1:3100/v1";   # 默认的后端服务器地址

                         if ($scheme = http) {                      # 判断请求的协议为 HTTP
                                set $backend "http://127.0.0.1:3100/v1";       # 将$backend设置为对应的后端服务器地址
                        }

                        proxy_pass $backend;     # 使用$backend作为proxy_pass的参数
                        # add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate";
                        add_header Content-Type "application/json";
                }
回复
1个回答
avatar
test
2024-06-20

proxy这么改:

location ^~/v1/ {
        proxy_pass https://127.0.0.1:300/v1/;
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-Proto https;
        proxy_set_header  X-NginX-Proxy true;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0k;
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_next_upstream error timeout invalid_header http_502;            
    }

Nginx - proxy_pass路径的唯一拼接规则

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容