いくつかのPythonマイクロサービスを実行しているEC2サーバー(プライベートサブネット)があります。 Apps EC2(パブリックサブネット)で実行されているアプリケーションからPythonマイクロサービスにアクセスしようとしています。
Apps EC2(パブリックサブネット)でnginxをリバースプロキシに設定しました。 nginxに関する最小限の知識に基づいて、次のconfファイルを追加しました。
server {
listen 80;
server_name 3.23.xxx.xxx EC2-public.test.com;
location / {
root /var/www/Myapp/App;
index index.php index.html index.htm;
autoindex on;
}
#Application APIs on EC2 public
location /api {
proxy_pass http://myappsip-EC1.:4000;
}
#My second EC2 Python microservice APIs
location /pyserv {
proxy_pass http://myprivateEC2-IP:5000/;
}
}
問題は、Proxy_passに絶対パスを提供すると、公開URLからマイクロサービスEC2のサービスにアクセスできますが、それに関連するパスにはアクセスできないことです。すべての相対パスは、デフォルトのEC2ルートパスから取得されたようです。
=> EC2-public.test.com/ (primary application - works)
=> EC2-public.test.com/pyserv (API1 on second EC2 - http://myprivateEC2-IP:5000/- works since given in proxy_pass)
=> EC2-public.test.com/pyserv/srv1 (API 2 on second EC2 - http://myprivateEC2-IP:5000/srv1 - does not work)
私は2番目のEC2ルートパスに言及していないようで、何かが欠けていることを知っています。しかし、方法がわからない。
ありがとう
答え1
末尾のスラッシュを忘れてしまったlocation /pyserv/
:)