我有一个 EC2 服务器(在私有子网中),我在其中运行一些 Python 微服务。从在 Apps EC2(公共子网中)上运行的应用程序中,我尝试访问 Python 微服务。
我将 nginx 设置为 Apps EC2(公共子网)上的反向代理。根据我对 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)
我知道我遗漏了一些东西,因为我似乎没有提到第二个 EC2 根路径。但我无法弄清楚如何。
谢谢
答案1
你忘记了末尾的斜杠location /pyserv/
:)