Ana*_*ukh 1 nginx docker docker-machine nginx-location nginx-reverse-proxy
我想将 NGINX 配置为作为其他微服务的反向代理。
我能够将请求从 NGINX 转发到其中一个微服务
如果我curl http://xx.xx.xx.xx:8080/打电话确实登陆了消费者门户但它使用默认位置配置/
当我评论1st块并配置相同的code位置/consumer-portal并执行操作时curl http://xx.xx.xx.xx:8080/consumer-portal
我得到:
无法获取/消费者门户
我有超过 10 个微服务,我想使用 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,如果我可以使用 docker 容器名称转发请求,请告诉我。
例如,xx.xx.xx.xx:9006我想使用而不是服务器server consumer-portal:9006
请建议我需要对.conf文件进行哪些更改。
location /consumer-portal {
proxy_pass http://consumer-portal;
Run Code Online (Sandbox Code Playgroud)
如果您的proxy_passURL 只是一个域/IP/主机名并且没有设置 URI,那么 Nginx 会将完整的客户端请求 URL 传递给代理以获取与位置块匹配的请求。所以这是您的要求
http://xx.xx.xx.xx:8080/consumer-portal将由 Nginx 代理到
http://consumer-portal/consumer-portal
如果您的proxy_passURL 是域/IP/主机名,并且还附加了 URI,那么 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/;
| 归档时间: |
|
| 查看次数: |
5189 次 |
| 最近记录: |