网站和接口在同一个服务器接口无法访问nginx该如何配置?
前端和服务端都部署在同一个服务器上,使用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个回答
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;
}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容