Nginx重定向proxy_pass

时间:2018-03-06 00:14:39

标签: nginx reverse-proxy

尝试在我的项目中使用proxy_pass,但我的某个重定向应用无法正常播放。

server {

listen       80;

location / {
    root /usr/share/nginx/html/;
}

# RabbitMQ
location /rabbitmq/ {
    proxy_pass          http://rabbitmq:15672/;

    proxy_no_cache      1;
    proxy_cache_bypass  1;

    proxy_set_header    Host $host;
    proxy_set_header    X-Forwarded-For $remote_addr;
}

# mongo-express:0.44.0
location /mongoui/ {
    proxy_pass          http://mongoui:8081/;

    proxy_no_cache      1;
    proxy_cache_bypass  1;

    proxy_set_header    Host $host;
    proxy_set_header    X-Forwarded-Host $host;

}
}

RabbitMQ工作正常,mongo-express没有。

它尝试从未设置为proxy的根目录/ public /加载资源。下面是几个日志:

2018/03/06 00:10:04 [error] 5#5: *13 open() "/usr/share/nginx/html/public/vendor-cd59715f645362da9f54.min.js" failed (2: No such file or directory), client: 172.16.229.1, server: , request: "GET /public/vendor-cd59715f645362da9f54.min.js HTTP/1.1", host: "172.16.229.174:8080", referrer: "http://172.16.229.174:8080/mongoui/"
172.16.229.1 - - [06/Mar/2018:00:10:04 +0000] "GET /public/vendor-cd59715f645362da9f54.min.js HTTP/1.1" 404 571 "http://172.16.229.174:8080/mongoui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"
2018/03/06 00:10:04 [error] 5#5: *13 open() "/usr/share/nginx/html/public/index-d5bd917c50cff4d254ba.min.js" failed (2: No such file or directory), client: 172.16.229.1, server: , request: "GET /public/index-d5bd917c50cff4d254ba.min.js HTTP/1.1", host: "172.16.229.174:8080", referrer: "http://172.16.229.174:8080/mongoui/"
172.16.229.1 - - [06/Mar/2018:00:10:04 +0000] "GET /public/index-d5bd917c50cff4d254ba.min.js HTTP/1.1" 404 571 "http://172.16.229.174:8080/mongoui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"
2018/03/06 00:10:04 [error] 5#5: *13 open() "/usr/share/nginx/html/public/img/mongo-express-logo.png" failed (2: No such file or directory), client: 172.16.229.1, server: , request: "GET /public/img/mongo-express-logo.png HTTP/1.1", host: "172.16.229.174:8080", referrer: "http://172.16.229.174:8080/mongoui/"
172.16.229.1 - - [06/Mar/2018:00:10:04 +0000] "GET /public/img/mongo-express-logo.png HTTP/1.1" 404 571 "http://172.16.229.174:8080/mongoui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"
2018/03/06 00:10:04 [error] 5#5: *13 open() "/usr/share/nginx/html/public/img/gears.gif" failed (2: No such file or directory), client: 172.16.229.1, server: , request: "GET /public/img/gears.gif HTTP/1.1", host: "172.16.229.174:8080", referrer: "http://172.16.229.174:8080/mongoui/"
172.16.229.1 - - [06/Mar/2018:00:10:04 +0000] "GET /public/img/gears.gif HTTP/1.1" 404 571 "http://172.16.229.174:8080/mongoui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"
2018/03/06 00:10:04 [error] 5#5: *13 open() "/usr/share/nginx/html/public/vendor-cd59715f645362da9f54.min.js" failed (2: No such file or directory), client: 172.16.229.1, server: , request: "GET /public/vendor-cd59715f645362da9f54.min.js HTTP/1.1", host: "172.16.229.174:8080", referrer: "http://172.16.229.174:8080/mongoui/"
172.16.229.1 - - [06/Mar/2018:00:10:04 +0000] "GET /public/vendor-cd59715f645362da9f54.min.js HTTP/1.1" 404 571 "http://172.16.229.174:8080/mongoui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"
2018/03/06 00:10:04 [error] 5#5: *13 open() "/usr/share/nginx/html/public/index-d5bd917c50cff4d254ba.min.js" failed (2: No such file or directory), client: 172.16.229.1, server: , request: "GET /public/index-d5bd917c50cff4d254ba.min.js HTTP/1.1", host: "172.16.229.174:8080", referrer: "http://172.16.229.174:8080/mongoui/"

1 个答案:

答案 0 :(得分:0)

该应用有一个环境变量,需要在docker中设置:

 - ME_CONFIG_SITE_BASEURL=/mongoui

所以以下工作(没有尾部斜杠):

server {
listen       80;

location / {
    root /usr/share/nginx/html/;
}

# RabbitMQ
location /rabbitmq/ {
    proxy_pass          http://rabbitmq:15672/;

    proxy_no_cache      1;
    proxy_cache_bypass  1;

    proxy_set_header    Host $host;
    proxy_set_header    X-Forwarded-For $remote_addr;
}

# MongoUI
location /mongoui {
    proxy_pass          http://mongoui:8081;

    proxy_no_cache      1;
    proxy_cache_bypass  1;

    proxy_set_header    Host $host;
    proxy_set_header    X-Forwarded-For $remote_addr;
}
}