为什么 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_callsubprocess.call

之前

无论如何,我从 api 中剪掉了 return 的 2 秒 :)