为什么 NGINX 反向代理 $.ajax post 给 "net::ERR_CONNECTION_REFUSED"
Why does NGINX reverse proxy $.ajax post give "net::ERR_CONNECTION_REFUSED"
我在等待 xhr 响应时得到 "net::ERR_CONNECTION_REFUSED"。
我试过使用 api 目录,它工作正常。我收到我的回复。此外,当通过 nginx 反向代理使用它时,我的 api 实际上收到了 POST,但 jquery 没有得到任何回复。就像我说的,它在使用 http://ip:port..
时确实如此
我的 nginx 配置如下所示:
upstream daffy {
server 127.0.0.1:4747;
}
server {
listen 80;
server_name daffy;
access_log /var/log/nginx/daffy.access.log;
error_log /var/log/nginx/daffy.error.log;
location /socket.io {
proxy_pass http://daffy/socket.io;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location /git/pull/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_pass http://daffy;
}
location / {
allow 192.168.7.0/24;
deny all;
proxy_pass http://daffy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
Nginx 在错误日志中没有显示任何错误。但是访问日志根本没有注册 POST 请求。
nginx-1.11.12-1.el7.ngx.x86_64
有人有什么建议吗?
更新
我已尝试禁用防火墙并在我的错误日志中打开调试。
Nginx 在启用调试的情况下并没有在错误日志中提供任何内容。
但是 GET 工作正常:
192.168.7.114 - - [02/Apr/2017:09:54:02 +0200] "GET /users/?_=1491119642698 HTTP/1.1" 200 570 "http://daffy/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
SELinux 已禁用。
已解决!!
我不得不将我的 python 后端更改为 return 比 2 秒快一点:
Popen(["/path/to/awesome.sh"], stdin=None,stdout=None,stderr=None)
在我使用 subprocess.check_call
或 subprocess.call
之前
无论如何,我从 api 中剪掉了 return 的 2 秒 :)
我在等待 xhr 响应时得到 "net::ERR_CONNECTION_REFUSED"。 我试过使用 api 目录,它工作正常。我收到我的回复。此外,当通过 nginx 反向代理使用它时,我的 api 实际上收到了 POST,但 jquery 没有得到任何回复。就像我说的,它在使用 http://ip:port..
时确实如此我的 nginx 配置如下所示:
upstream daffy {
server 127.0.0.1:4747;
}
server {
listen 80;
server_name daffy;
access_log /var/log/nginx/daffy.access.log;
error_log /var/log/nginx/daffy.error.log;
location /socket.io {
proxy_pass http://daffy/socket.io;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location /git/pull/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_pass http://daffy;
}
location / {
allow 192.168.7.0/24;
deny all;
proxy_pass http://daffy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
Nginx 在错误日志中没有显示任何错误。但是访问日志根本没有注册 POST 请求。
nginx-1.11.12-1.el7.ngx.x86_64
有人有什么建议吗?
更新 我已尝试禁用防火墙并在我的错误日志中打开调试。
Nginx 在启用调试的情况下并没有在错误日志中提供任何内容。
但是 GET 工作正常:
192.168.7.114 - - [02/Apr/2017:09:54:02 +0200] "GET /users/?_=1491119642698 HTTP/1.1" 200 570 "http://daffy/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
SELinux 已禁用。
已解决!!
我不得不将我的 python 后端更改为 return 比 2 秒快一点:
Popen(["/path/to/awesome.sh"], stdin=None,stdout=None,stderr=None)
在我使用 subprocess.check_call
或 subprocess.call
无论如何,我从 api 中剪掉了 return 的 2 秒 :)