Nginx 正在尝试打开文件而不是重定向到代理
Nginx is trying open file instead of redirect to proxy
您好,我正在将 Nginx 与 njs 一起使用,并且在我的配置中有这样的位置
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
error_log stderr debug;
...
location /checkout/payment {
js_content http.payment;
}
location /tc/api/endpoint {
proxy_ssl_server_name on;
proxy_ssl_name some_proxy_host;
subrequest_output_buffer_size 1m;
proxy_read_timeout 300;
proxy_buffer_size 128k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 128k;
proxy_set_header Accept "application/json, text/plain, */*";
proxy_set_header X-TC-Domain some_domain;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Content-Type 'application/json';
proxy_set_header Authorization "[[AUTH_TOKEN]]";
proxy_pass https://some_proxy_host;
proxy_redirect / /;
proxy_intercept_errors on;
error_page 301 302 307 = @handle_redirect;
}
我正在向 API
发出 POST 请求的 njs 文件内部
function payment(req) {
if (req.method === 'GET') {
return returnIndex(req);
} else {
req.subrequest('/tc/api/endpoint/book', {
body: JSON.stringify({
...
}),
method: 'POST',
}).then(payment => {
return returnIndex(req);
}).catch(() => {
return returnIndex(req);
});
}
}
在这个请求中,我得到正文响应作为表单数据将其转换为 JSON 并向第三方发出 POST 请求,但出现以下错误。
*63 open() "/usr/share/nginx/html//tc/api/endpoint/book" failed (2: No such file or directory) while sending to client, client: 10.0.0.14, server: _, request: "POST /checkout/payment?key=val HTTP/1.1", subrequest: "/tc/api/endpoint/book", upstream: "https://11.100.216.19:443//book", host: "proxy.eu-west-2.elb.amazonaws.com"
此请求应代理给第 3 方,但看起来它试图打开文件但未进行重定向。此问题仅在我的 AWS 账户中重现,Nginx 在 CloudFront 之后托管。在当地它运作良好。知道为什么会这样吗?
已请求 API 提出问题。 Nginx 有这样的行为是因为响应的 405 状态码
您好,我正在将 Nginx 与 njs 一起使用,并且在我的配置中有这样的位置
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
error_log stderr debug;
...
location /checkout/payment {
js_content http.payment;
}
location /tc/api/endpoint {
proxy_ssl_server_name on;
proxy_ssl_name some_proxy_host;
subrequest_output_buffer_size 1m;
proxy_read_timeout 300;
proxy_buffer_size 128k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 128k;
proxy_set_header Accept "application/json, text/plain, */*";
proxy_set_header X-TC-Domain some_domain;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Content-Type 'application/json';
proxy_set_header Authorization "[[AUTH_TOKEN]]";
proxy_pass https://some_proxy_host;
proxy_redirect / /;
proxy_intercept_errors on;
error_page 301 302 307 = @handle_redirect;
}
我正在向 API
发出 POST 请求的 njs 文件内部function payment(req) {
if (req.method === 'GET') {
return returnIndex(req);
} else {
req.subrequest('/tc/api/endpoint/book', {
body: JSON.stringify({
...
}),
method: 'POST',
}).then(payment => {
return returnIndex(req);
}).catch(() => {
return returnIndex(req);
});
}
}
在这个请求中,我得到正文响应作为表单数据将其转换为 JSON 并向第三方发出 POST 请求,但出现以下错误。
*63 open() "/usr/share/nginx/html//tc/api/endpoint/book" failed (2: No such file or directory) while sending to client, client: 10.0.0.14, server: _, request: "POST /checkout/payment?key=val HTTP/1.1", subrequest: "/tc/api/endpoint/book", upstream: "https://11.100.216.19:443//book", host: "proxy.eu-west-2.elb.amazonaws.com"
此请求应代理给第 3 方,但看起来它试图打开文件但未进行重定向。此问题仅在我的 AWS 账户中重现,Nginx 在 CloudFront 之后托管。在当地它运作良好。知道为什么会这样吗?
已请求 API 提出问题。 Nginx 有这样的行为是因为响应的 405 状态码