2017-04-04 162 views
0

设置: 1>使用Angular JS的Web GUI在使用Flask的tomcat服务器和Python应用程序中使用Flask正在AWS服务器上运行。 2>我在安全的服务器上工作,因此无法直接访问AWS。 3>我已经设置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服务web应用程序和python

现在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

在服务器,以获得

回答

0

你需要与你的使用后/一致。利用proxy_pass声明(与alias一样),nginx执行文本替换以形成重写的URI。

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

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

如果您的前两个locationhostIP是相同的,并假定缺少尾随/是偶然的,它们可以被组合成单个location块。

例如:

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

参见this document更多。

+0

非常感谢。整个问题是最后的斜线。它终于像魅力一样工作。正如你所提到的正斜杠正在改变我的POST到GET。多谢 :) – SunDante

相关问题