设定: 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答案 0 :(得分:0)
您需要与使用尾随/
保持一致。使用proxy_pass
语句(与alias
一样)nginx
执行文本替换以形成重写的URI。
API /cross
或/cross/
的URI是?当服务器被强制执行重定向时(例如,附加/
),POST将转换为GET。
在location
和proxy_pass
上指定相同的URI是不必要的,因为不会进行任何更改。
如果前两个hostIP
块中的location
相同,并且假设缺失的尾随/
是偶然的,则可以将它们合并为一个location
块。
例如:
location / {
proxy_pass http://hostIP:9505;
}
location /cross {
proxy_pass http://127.0.0.1:5000;
}
有关详情,请参阅this document。