无法获取Nginx反向代理来加载Web应用程序的CSS /图像

时间:2019-09-10 20:35:51

标签: nginx reverse-proxy

我已经配置了反向代理,并且在加载http的同时,登录页面的css / image也不会加载。它正在尝试从本地主机而不是上游服务器加载它们

我尝试了多次proxy_redirects和重写(尽管我在这方面还很陌生),但似乎无法使其正常工作。

 server {
  listen 80;
  location /test {
    proxy_pass https://10.10.10.10/platform/login;
    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_redirect https://10.10.10.10/ /;
   }




}

记录错误:

[error] 26072#0: *127 open() "/usr/share/nginx/html/platform/images/leaves.png" failed (2: No such file or directory), client: 127.0.0.1, server: , request: "GET /platform/images/leaves.png HTTP/1.1", host: "localhost", referrer: "http://localhost/test"

当我检查chrome上的元素时,它也会为所有css /图像返回404。

请帮助

2 个答案:

答案 0 :(得分:0)

您网站的HTML尝试访问的网址不是/test/**而是/platform/images/leaves.png,这意味着NGINX不会尝试使用反向代理。

除了/test/**以外,NGINX配置的这一部分什么都没有用,NGINX正在Web服务器的本地磁盘上搜索不存在的文件。

尝试使用捕获所有作用域的配置,而不只是/ test。

server {
  listen 80;
  location /platform {
    proxy_pass https://10.10.10.10/platform/;
    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_redirect https://10.10.10.10/ /;
   }
}

您的网站应该在http://{NGINX server}/platform/login中可见 这将更改您端点的网址,因此您可以为/test添加一个例外,以使http://{NGINX server}/test也正常工作。

server {
  listen 80;
  location /platform {
    proxy_pass https://10.10.10.10/platform/;
    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_redirect https://10.10.10.10/ /;
   }
  location /test {
    proxy_pass https://10.10.10.10/platform/login;
    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_redirect https://10.10.10.10/ /;
  }
}

您还可以编辑HTML页面并将proxy_pass /test/**更改为https://10.10.10.10/platform/

您的问题将在Nginx defaults to /usr/share/nginx/html

中进一步解释

答案 1 :(得分:0)

我觉得可能存在几个不同的问题。位置路径,您的重定向和https。

function foo(){
  this.OnDone = null;

  const Do = function() {
  console.log(this.OnDone);
  if (typeof this.OnDone === 'function')
    this.OnDone();
  }

  return {Do, onDone:this.OnDone};
}


let f = new foo();
f.OnDone = () => {
  console.log('OnDone');
};

f.Do();

此配置执行以下操作:

  • 允许访问server { listen 80; location /platform/ { proxy_pass https://10.10.10.10/; 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; } } 中的子目录,例如platform
  • /platform/login处为上游服务器建立连接。
  • 为连接(http / https)建立正确的协议。