2017-04-04 2 views
0

設定: > Tomcatサーバーに移植されたAngular JSとFlaskを使用するPythonアプリケーションを使用するWeb GUIはAWSサーバー上で実行されています。 2>安全なサーバーで作業しているため、AWSに直接アクセスできません。 3>ローカルのセキュリティで保護されたネットワークからGUIアプリケーションにアクセスするためにNGINXを設定しました。 GUIアプリケーションがawsserver:9506/appName で実行されています。4> Flaskアプリケーションが127.0.0.1:5000でホストされているAWSサーバーで実行されています。このアプリは2 URIのクロスとaccrossがあります 127.0.0.1:5000/cross 127.0.0.1:5000/accrossリモートサーバー上でnginxを使用してWebアプリケーションとPythonを処理します

は今私のGUIでnginxの設定後、私はそれがドメイン名を使用して、ポートせずにアクセスすることができています: doman.name/appName

私がそれを使用しようとすると、私のURLの変更をサーバにリクエストしてください: 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

により、サーバでGETに変換されていることです。 proxy_passステートメント(aliasの場合)を使用すると、nginxはテキスト置換を実行して書き換えられたURIを形成します。

APIのURIは/crossまたは/cross/ですか?サーバが強制的にリダイレクトを実行すると、POSTはGETに変換されます(たとえば、/を追加するなど)。

locationproxy_passに同じURIを指定する必要はありません。

あなたの最初の2つのlocationのブロックでhostIPは同じであり、行方不明末尾/は偶発であると仮定した場合には、それらを単一locationのブロックにまとめることができます。例えば

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

は、より多くのためにthis documentを参照してください。

+0

ありがとうございます。全体の問題は、後続のスラッシュでした。ついに魅力的に働いています。あなたが言及したように、スラッシュはPOSTをGETに変えていました。とても感謝しております :) – SunDante

関連する問題