Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Nginx在多台主机之间代理静态文件?_Nginx_Reverse Proxy - Fatal编程技术网

如何使用Nginx在多台主机之间代理静态文件?

如何使用Nginx在多台主机之间代理静态文件?,nginx,reverse-proxy,Nginx,Reverse Proxy,我有两个应用程序运行在nginx docker容器上,每个都是前端应用程序,带有css、JS等。 我需要通过反向代理(另一个容器中的nginx)进行访问, 但是静态文件是在代理容器而不是rigth容器(app.local或login.local)中搜索的 我的代理配置: server { listen 80; server_name localhost; location /login { rewrite /login(.*) $1 br

我有两个应用程序运行在nginx docker容器上,每个都是前端应用程序,带有css、JS等。 我需要通过反向代理(另一个容器中的nginx)进行访问, 但是静态文件是在代理容器而不是rigth容器(app.local或login.local)中搜索的

我的代理配置:

server {
    listen       80;
    server_name  localhost;

    location /login {

        rewrite /login(.*) $1 break;

        proxy_pass http://login.local:80;
        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-Proto $scheme;
    }

    location /app {

        rewrite /app(.*) $1 break;

        proxy_pass http://app.local:80;
        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-Proto $scheme;
    }
}
我的nginx代理日志:

192.168.150.13 - - [09/Aug/2016:13:59:13 +0000] "GET /login HTTP/1.1" 200 574 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-"
2016/08/09 13:59:13 [error] 334#334: *118 open() "/etc/nginx/html/css/main.css" failed (2: No such file or directory), client: 192.168.150.13, server: machine.local, request: "GET /css/main.css?1470692258780 HTTP/1.1", host: "machine.local:7000", referrer: "http://machine.local:7000/login"
192.168.150.13 - - [09/Aug/2016:13:59:13 +0000] "GET /css/main.css?1470692258780 HTTP/1.1" 404 571 "http://machine.local:7000/login" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-"

您需要使用Nginx Http子模块来修改代理内容,以便将前缀添加到返回的内容url中


您需要使用Nginx Http子模块修改代理内容,将前缀添加到返回的内容URL中


您有/css的位置吗?正如您现在所说的,任何以/app或/login开头的内容都应该由代理处理。您没有为/css显示任何内容。否,css文件位于自己的应用程序(容器)中。它假设CSS(所有静态文件)也必须通过应用程序的位置进行代理。但是您调用的是GET/CSS/main.CSS,而不是example/login/CSS/main.CSS,所以nginx不知道如何处理该请求是的,这就是重点。我希望每个应用程序都提供其静态文件。避免使用“login”前缀。您是否有/css的位置?正如您现在所说的,任何以/app或/login开头的内容都应该由代理处理。您没有为/css显示任何内容。否,css文件位于自己的应用程序(容器)中。它假设CSS(所有静态文件)也必须通过应用程序的位置进行代理。但是您调用的是GET/CSS/main.CSS,而不是example/login/CSS/main.CSS,所以nginx不知道如何处理该请求是的,这就是重点。我希望每个应用程序都提供其静态文件。避免使用“登录”前缀。