Nginx上针对Python脚本的POST请求返回405错误

时间:2019-07-08 12:03:46

标签: python nginx uwsgi

尝试将页面/工具从Apache2 Web服务器(不是我自己设置)移动到Nginx Web服务器(nginx-full 1.10.3-1 + deb9u2; uwsgi 2.0.14 + 20161117-3 + deb9u2; uwsgi-在Debian 9(stretch)上托管的plugin-python 2.0.14 + 20161117-3 + deb9u2)。当前可以通过fqdn.changed / tool访问它(fqdn.changed =不是实际的fqdn)。该工具提供几个复选框和自由文本框来填充,然后使用插入的数据对远程数据库进行api调用。用于扩展(+)或减少(-)可用Box数量的按钮可以工作,但是通过屏幕上的按钮(“ Do Magic”)激活脚本会导致可疑的快速加载,并且在屏幕上没有返回-检查日志时,显示405尝试的POST。

这是我当前在nginx网站配置中的位置(以及其他一些位置):

location ~ /tool {
 root /var/www
 index index.html
}

该工具位于/ var / www / tool /中,包括/var/www/tool/callTool.py中的python-script(尚不那么有效) 由于脚本可以在Apache2主机上运行,​​并且通过Nginx主机手动完成的API调用也可以运行,因此我认为问题出在使用脚本的权限或设置中。

这是脚本(和扩展/减少)在代码中的方式:

<input type="button" value="+" onclick="addEntry()" />
<input type="button" value="-" onclick="removeEntry()" />
<input type="button" value="Do the magic" onclick="callTool().done(displayAdded)" />

函数“ callTool”首先将输入相应地分类到用于API调用的数组中,然后结束于:

            url: "/tool/callTool.py",
            type: "post",
            datatype:"json",
            data: { data: postData }

由于移动后大部分页面开箱即用,所以我去测试它。仅此功能(功能的关键)不起作用。最终,我偶然发现了Nginx和静态页面,uwsgi等,因此我尝试实现它。 在回购协议中,他们有一个uwsgi pkg,足以满足我的意图。安装它,并将默认的uwsgi_params添加到/ etc / nginx /中,以及以下内容添加到我在nginx中的vhost中:

location ~ \.py {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000;
}

/ etc / uwsgi / apps-available /(链接到/ etc / uwsgi / apps-enabled /)中的tool.ini包含以下内容:

[uwsgi]
plugins = python
socket = 127.0.0.1:9000
cgi-allowed-ext = .py 
uid = 33

在重新启动uwsgi.service之后检查日志,我的Tool.ini在9000上听了我的问候。还要检查netstat以确保它在那里:tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 33 1578897715 20936/uwsgi

但是,再次使用所谓的“ Do Magic”按钮会导致405 Method不允许进行POST,uwsgi日志中也没有条目。 这是尝试使用它时的众多日志条目之一(注意:我更改了FQDN,因为它位于公共主机上,尽管仅对内部访问进行了防火墙保护):"POST /tool/callTool.py HTTP/1.1" 405 575 "https://fqdn.changed/tool/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) snap Chromium/75.0.3770.90 Chrome/75.0.3770.90 Safari/537.36"

我一直在寻找有关nginx + uwsgi的安装指南和资料,甚至试图在IRC中询问无济于事。也许我只是缺少明显的东西?

Nginx日志记录级别是调试级别,尽管常规日志和此vhosts错误日志均未显示任何与此相关的提示。

预期结果将是页面上显示的API调用的结果(以及日志中没有错误代码)。

0 个答案:

没有答案