gpt4 book ai didi

docker - 如何为多种服务配置NGINX位置

转载 作者:行者123 更新时间:2023-12-02 20:46:57 25 4
gpt4 key购买 nike

我想将NGINX配置为充当其他微服务的反向代理。

我能够将请求从NGINX转发到微服务之一

如果我这样做curl http://xx.xx.xx.xx:8080/ call 确实落在消费者门户上,但是
其使用默认位置配置/
当我注释1st块并为位置code配置相同的/consumer-portal并执行curl http://xx.xx.xx.xx:8080/consumer-portal

我得到:

Cannot GET /consumer-portal



我想使用NGINX调用十多个微服务。

以下是我的 nginx.conf文件
worker_processes 4;
events {
worker_connections 1024;
}

http {
sendfile on;
upstream consumer-portal {

server xx.xx.xx.xx:9006;

}
upstream publisher-portal {

server xx.xx.xx.xx:9001;
}
server {
listen 8080;

#1st Block
#location / {
# proxy_pass http://consumer-portal;
# proxy_redirect off;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Host $server_name;
#}

#2nd Block
location /consumer-portal {
proxy_pass http://consumer-portal;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}

#3rd Block
location /publisher-portal/ {
proxy_pass http://publisher-portal;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}

另外,请告诉我是否可以使用docker容器名称转发请求。

例如,我想使用 xx.xx.xx.xx:9006代替服务器 server consumer-portal:9006
请提出我需要对 .conf 文件进行的更改。

最佳答案

    location  /consumer-portal {
proxy_pass http://consumer-portal;

如果您的 proxy_pass URL仅是域/ IP /主机名,并且未设置URI,则Nginx会将完整的客户端请求URL传递给代理,以查找与位置块匹配的请求。所以在这里您的要求
http://xx.xx.xx.xx:8080/consumer-portal将由Nginx代理到
http://consumer-portal/consumer-portal
如果您的 proxy_pass URL是还附加了URI的域/ IP /主机名,则Nginx将用指令中的URI替换原始客户端请求中位置块的匹配部分,然后将结果URL代理到上游服务器。因此,如果您有 proxy_pass http://consumer-portal/new/location;,则请求
http://xx.xx.xx.xx:8080/consumer-portal/account将由Nginx代理为
http://consumer-portal/new/location/account
当您想从请求中删除对上游代理的 /consumer-portal时,解决方案就像在 proxy_pass指令中添加斜杠一样简单,如下所示:
proxy_pass http://consumer-portal/;

关于docker - 如何为多种服务配置NGINX位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51210307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com