Nginx反向代理未正确加载站点

时间:2018-07-13 09:17:43

标签: variables nginx static proxypass server-name

我有一个nginx配置,可以监听任何子域*.mydomain.com, 并且我想使用子域作为变量,以将请求代理到其他站点。 这是我的nginx配置

server {

    listen 80;
    server_name "~^(?<subdomain>.*).mydomain.com";

    location / {
            resolver 1.1.1.1 1.0.0.1 ipv6=off;
            proxy_pass http://hosting.mydomain.com/$subdomain/;
            proxy_redirect off;
            access_log /var/log/nginx/proxy.log;
    }

}

我直接请求该网站,并且可以完美加载

Site placed on AWS S3, and bucket static website address cnamed to mydomain

但是,当我尝试通过user1.mydomain.com, the page didn't load images, and css

访问时

This is the same site

并且在浏览器网络面板中显示

Difference between direct and proxy access

之所以出现此问题,是因为我有许多站点存储在S3存储桶中,并且位于不同的文件夹中(文件夹名称用作子域)。 我想使用一个域通过子域访问所有域。

预先感谢

1 个答案:

答案 0 :(得分:1)

您忘了代理传递URI,您正在为每个请求(包括JS和CSS请求)提供user1/index.html,这就是为什么所有响应都具有相同大小(2kb,即{{1}的大小)的原因}),这也是为什么在user1/index.html的第一行中得到Uncaught SyntaxError: Unexpected token <的原因,因为它返回的是一个以Enterprise_skeleton.bundle.js开头的HTML文档,而不是实际的JS包。

更改

<!doctype html>

location / {
  proxy_pass http://hosting.mydomain.com/$subdomain/;
}