使用nginx proxy_pass时删除文件夹名称

时间:2015-02-10 16:58:09

标签: nginx

我们有一个CMS,其中一些页面可以通过example.com/xyz

访问

我们需要使用example1.com访问一些网站,但保持地址栏相同,所以例如转到example1.com转到example.com/xyz,但仍然在地址栏中显示example1.com

我是通过使用proxy_pass完成的,看起来像这样。

location / {
proxy_pass http://example1.com/xyz;
}

当我访问example1.com时,我得到example.com/xyz(地址栏stil显示example1.com)

我还为/ xyz

下面的页面创建了第二个proxy_pass

看起来像这样。

location /xyz {
proxy_pass http://example.com;
}

当我访问example1.com/xyz/hello时,我可以在example.com/xyz/hello上找到该页面(地址栏仍然显示example1.com/xyz/hello)

无论如何这样做它显示为example1.com/hello,即没有xyz。

我尝试了以下

rewrite /xyz/[^/]*(.*) $1 break;

rewrite ^/xyz(/.*)$ $1 last;

但是/ xyz /仍然出现在地址中。

希望有人可以提供帮助。

由于

这是我的完整配置

server {
listen 80;
client_max_body_size 4G;
server_name example1.com;
passenger_enabled on;
root /home/<user>/current/public;
rails_env production;
keepalive_timeout 5;


location = / {
proxy_pass http://example1.com/<folder>; // This is to silently redirect the root of http://example1.com to http://example1.com/<folder>
}

location ~ ^/assets/ {
root /home/<user>/current/public;
expires max;
add_header Cache-Control public;
add_header ETag "";
break;
}


location /system {
proxy_pass http://www.example.com; // This is to silently redirect http://example1.com/system to example.com/system, but to still show example1.com/system in the address bar
}



location ^~/<folder> {
proxy_pass http://example.com/<folder>; // This silently redirects example1.com/ to example.com/<folder>
}
}

这一切都在那个

访问example1.com会给我提供example.com/folder

页面

点击页面上的链接,转到example.com上的正确页面,但在地址栏中显示example1.com。

例如

example1.com/folder/history

我需要隐藏它的文件夹部分。

0 个答案:

没有答案