2017-04-04 166 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