- 主题:求问解决方法:nginx反向代理获取不到被代理的页面所引用的静态
在一个nginx上,地址是:ip0:port0
location /a
proxy_pass ip1:port1
location /b
proxy_pass ip2:port2
结果在在浏览器输入:
ip0:port0/a
页面可以链接到
ip1:port1的主页
但主页中引用的所有静态文件,都被替换成了
ip0:port0/css/**.css, ip0:port0/js/**.js ip0:port0/static/**.jpg 等等
造成找不到这些文件,
其实这些文件都在ip1:port1上对应的目录中
求问如何解决
--
FROM 183.242.73.*
你页面上的引用用了绝对路径?
【 在 qianfeng018 (疯子) 的大作中提到: 】
: 在一个nginx上,地址是:ip0:port0
: location /a
: proxy_pass ip1:port1
: ...................
--
FROM 180.167.95.*
没有啊, 都是./css/***.css之类的
【 在 guestking 的大作中提到: 】
: 你页面上的引用用了绝对路径?
:
--
FROM 183.242.73.*
如果你不想把/a这个相对路径带入上游, 在 proxy_pass ip1:port1 后面加个斜杆试试
proxy_pass
http://ip1:port1/【 在 qianfeng018 的大作中提到: 】
: 在一个nginx上,地址是:ip0:port0
: location /a
: proxy_pass ip1:port1
: ...................
--
FROM 60.253.242.*
1、如果能确定/css, /js, /static下面都可以被ip1:port1独占,就直接加规则代理过去。
2、如果不能独占,则可以在规则前加上判断referer是来自/a还是/b(可以定义一个变量),然后根据来源把/css,/js,/static转到对应的upstream。
3、如果静态文件不多,在文件头部用<base>标签指定base URL为ip0:port0/a/
【 在 qianfeng018 (疯子) 的大作中提到: 】
: 在一个nginx上,地址是:ip0:port0
: location /a
: proxy_pass ip1:port1
: location /b
: proxy_pass ip2:port2
: 结果在在浏览器输入:
: ip0:port0/a
: 页面可以链接到
: ip1:port1的主页
: 但主页中引用的所有静态文件,都被替换成了
: ip0:port0/css/**.css, ip0:port0/js/**.js ip0:port0/static/**.jpg 等等
: 造成找不到这些文件,
: 其实这些文件都在ip1:port1上对应的目录中
: 求问如何解决
--
FROM 221.220.225.*
试过了,一样的结果
【 在 Mikov 的大作中提到: 】
: 如果你不想把/a这个相对路径带入上游, 在 proxy_pass ip1:port1 后面加个斜杆试试
: proxy_pass
http://ip1:port1/:
--
FROM 183.242.73.*
多谢指导
1 不能独占
2 这个倒是可以试试,不过a,b是两个相似开发的项目,都是vue前端,css js static 下有一些重名文件。不知道怎么才能用规则区分
3 两个项目静态文件都不少
【 在 sayinger 的大作中提到: 】
: 1、如果能确定/css, /js, /static下面都可以被ip1:port1独占,就直接加规则代理过去。
: 2、如果不能独占,则可以在规则前加上判断referer是来自/a还是/b(可以定义一个变量),然后根据来源把/css,/js,/static转到对应的upstream。
: 3、如果静态文件不多,在文件头部用<base>标签指定base URL为ip0:port0/a/
: ...................
--
FROM 183.242.73.*
添加一个root看行不行
http://nginx.org/en/docs/http/ngx_http_core_module.html#root
【 在 qianfeng018 的大作中提到: 】
: 在一个nginx上,地址是:ip0:port0
: location /a
: proxy_pass ip1:port1
: ...................
--
FROM 103.117.19.*
链接里面是nginx的文档,按照nginx的文档写就好
举个例子:
server {
listen 80;
listen [::]:80;
server_name xxx;
root /yyy/xxx;
index index.html;
location / {
proxy_pass
http://xxx/; ...
}
}
【 在 qianfeng018 的大作中提到: 】
: 填在何处?
: root proxy_pass ip1:port1?
: 理论上说不通啊
: ...................
--
FROM 103.117.19.*