Apache Nginx:使用keep请求头重写url
我想做的是: 如果我请求的文件不在我的磁盘上,nginx将从real server请求,这是我的Apache Nginx:使用keep请求头重写url,apache,.htaccess,mod-rewrite,nginx,Apache,.htaccess,Mod Rewrite,Nginx,我想做的是: 如果我请求的文件不在我的磁盘上,nginx将从real server请求,这是我的.htaccess文件规则,我想将其转换为nginx规则,因此结果是: 但这将导致两个问题: 如果我请求test.com/js/test.js它将重定向到http://xxx.xxx.xxx.xxx//js/sea1.2.js在我的浏览器中!但是真正的服务器可以拒绝请求,因为我没有使用test.com域,并返回404。那么,我怎样才能让来自real server的nginx请求在后台运行,并至少保留原
.htaccess
文件规则,我想将其转换为nginx规则,因此结果是:
但这将导致两个问题:
test.com/js/test.js
它将重定向到http://xxx.xxx.xxx.xxx//js/sea1.2.js
在我的浏览器中!但是真正的服务器可以拒绝请求,因为我没有使用test.com
域,并返回404
。那么,我怎样才能让来自real server的nginx请求在后台运行,并至少保留原始请求头信息来保留域。就像Apache
那样。http://xxx.xxx.xxx.xxx//js/sea1.2.js
,js前面有双斜杠。我怎样才能修好它404
表示找不到,请更改配置:
location /js/ {
root E://Work/master;
if (!-e $request_filename){
rewrite ^(.*)$ http://xxx.xxx.xxx.xxx$1 redirect;
}
}
重定向结果将是
http://xxx.xxx.xxx.xxx/js/sea1.2.js
,这将使它的行为类似于Apache我假设[p]
标志意味着代理,这也是我的答案
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://xxx.xxx.xxx.xxx/$request_uri;
}
location /js/ {
root E://Work/master;
if (!-e $request_filename){
rewrite ^(.*)$ http://xxx.xxx.xxx.xxx$1 redirect;
}
}
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://xxx.xxx.xxx.xxx/$request_uri;
}