NGINX:proxy_pass 个微服务

NGINX: proxy_pass microservices

我有一个 mesos 集群在环境测试中工作,我设置 nginx + nixy 用于服务发现。它工作正常,但是当 nginxdocker 容器制作 proxy_pass 时,我收到 404 error.

ex:我在 privateip:37130 中有一个 Tomcat 容器监听,如果我为位置 / 配置 proxy_pass,它就可以工作了!如果我配置位置 /service,我会得到 404 error 代码。

有人知道吗?

我的nginx.conf

worker_processes auto;
pid /run/nginx.pid;

events {
    use epoll;
    worker_connections 2048;
    multi_accept on;
}
http {
    add_header X-Proxy  always;
    access_log off;
    error_log /var/log/nginx/error.log warn;
    server_tokens off;
    client_max_body_size 128m;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    proxy_redirect off;
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''  close;
    }
    # time out settings
    proxy_send_timeout 120;
    proxy_read_timeout 120;
    send_timeout 120;
    keepalive_timeout 10;
    upstream tomcat {
        server 172.30.119.214:31816;
    }

    server {
        listen 80;
        server_name app.org;

        location / {
            return 503;
        }
        location /tomcat/ {
            proxy_set_header HOST $host;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_connect_timeout 30;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_pass http://tomcat;
        }
    }
}

更改如下

proxy_pass http://tomcat;

proxy_pass http://tomcat/;

添加尾随 / 将确保来自该位置的 /tomcat/ 不会被发送到 tomcat 服务