我有一个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
并且在浏览器网络面板中显示
Difference between direct and proxy access
之所以出现此问题,是因为我有许多站点存储在S3存储桶中,并且位于不同的文件夹中(文件夹名称用作子域)。 我想使用一个域通过子域访问所有域。
预先感谢
答案 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/;
}