在远程服务器

时间:2017-04-04 14:04:29

标签: post nginx flask get

设定: 1 GT;在tomcat服务器中使用Angular JS的Web GUI和使用Flask的Python应用程序在AWS服务器上运行。 2 - ;我在安全的服务器上工作,因此无法直接访问AWS。 3 GT;我已经设置NGINX从我的本地安全网络访问GUI应用程序。 GUI应用程序在awsserver上运行:9506 / appName 4> Flask应用程序在127.0.0.1:5000上托管的AWS服务器上运行。这个应用程序有2个uri的十字架和交叉: 127.0.0.1:5000/cross 127.0.0.1:5000/accross

现在在NGINX设置后的GUI中,我可以使用域名和端口访问它: doman.name/appName

现在,当我尝试使用它时,向服务器发送请求,我的网址更改为: doman.name/cross。我在NGINX配置中进行了更改,并且能够访问它,但无法获得响应。请在下面找到我的NGINX配置文件:

server {
    listen 80;
    server_name domain.name;
    root /home/Tomcat/webapps/appName;

    location / {
        proxy_pass http://hostIP:9505/;                 #runs the tomcat home page
    }

    location /appName/ {
        proxy_pass http://hostIP:9505/appName;          #runs the application home page
    }

    location /cross/ {
        proxy_pass http://127.0.0.1:5000/cross;         #hits the python flask app and am trying to send post
    }
}

我注意到的是我的POST请求正在由NGINX

在服务器上转换为GET

1 个答案:

答案 0 :(得分:0)

您需要与使用尾随/保持一致。使用proxy_pass语句(与alias一样)nginx执行文本替换以形成重写的URI。

API /cross/cross/的URI是?当服务器被强制执行重定向时(例如,附加/),POST将转换为GET。

locationproxy_pass上指定相同的URI是不必要的,因为不会进行任何更改。

如果前两个hostIP块中的location相同,并且假设缺失的尾随/是偶然的,则可以将它们合并为一个location块。

例如:

location / {
    proxy_pass http://hostIP:9505;
}
location /cross {
    proxy_pass http://127.0.0.1:5000;
}

有关详情,请参阅this document