首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在远程服务器上使用nginx提供web应用程序和python服务

在远程服务器上使用nginx提供web应用程序和python服务
EN

Stack Overflow用户
提问于 2017-04-04 22:04:29
回答 1查看 213关注 0票数 0

设置:在1>服务器上运行使用Angular JS的AWS Web和使用Flask的Python。我在一个安全的服务器上工作,因此无法直接访问2>。3>我已经将NGINX设置为从本地安全网络访问图形用户界面应用程序。4>应用程序在awsserver:9506上运行/appName GUI Flask应用程序在托管在127.0.0.1:5000上的AWS服务器上运行。此应用程序有2个uri的交叉和交叉:127.0.0.1:5000/交叉127.0.0.1:5000/accross

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

现在,当我尝试使用它时,向服务器发送一个请求,将我的url更改为: doman.name/cross。我在NGINX配置中做了更改,可以访问它,但无法获得响应。下面是我的NGINX配置文件:

代码语言:javascript
复制
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到服务器

EN

回答 1

Stack Overflow用户

发布于 2017-04-04 23:22:33

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

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

没有必要在locationproxy_pass上指定相同的URI,因为没有进行任何更改。

如果前两个location块中的hostIP相同,并且假定缺少尾随的/是偶然的,则可以将它们合并到单个location块中。

例如:

代码语言:javascript
复制
location / {
    proxy_pass http://hostIP:9505;
}
location /cross {
    proxy_pass http://127.0.0.1:5000;
}

有关详细信息,请参阅this document

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43209552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档