在远程服务器上使用nginx服务web应用程序和python
问题描述:
设置: 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
在服务器,以获得
答
你需要与你的使用后/
一致。利用proxy_pass
声明(与alias
一样),nginx
执行文本替换以形成重写的URI。
API /cross
或/cross/
的URI?当服务器被强制执行重定向时,POST转换为GET(例如,附加/
)。
在location
和proxy_pass
上指定相同的URI是不必要的,因为不做任何更改。
如果您的前两个location
块hostIP
是相同的,并假定缺少尾随/
是偶然的,它们可以被组合成单个location
块。
例如:
location/{
proxy_pass http://hostIP:9505;
}
location /cross {
proxy_pass http://127.0.0.1:5000;
}
参见this document更多。
非常感谢。整个问题是最后的斜线。它终于像魅力一样工作。正如你所提到的正斜杠正在改变我的POST到GET。多谢 :) – SunDante