Nginx反向代理到不同位置的多个站点



是否可以配置nginx反向代理,其中http://localhost/a/指向1个站点,http://localhost/b/指向另一个站点?我尝试了这个配置:

server {
listen       80;
server_name  localhost;
location /a/ {
proxy_pass http://apache.org/;
}
location /b/ {
proxy_pass http://www.gnu.org/;
}

它几乎工作,但所有的网页返回的链接都缺少/a/或/b/前缀,所以它不能加载任何图片,样式等。例如链接http://localhost/css/styles.css不能工作,但是http://localhost/a/css/styles.css可以工作。

是否有一个指令,将添加页面上的所有链接与合适的前缀?或者有不同的方法把网站放在不同的位置?

@ivan-shatsky,非常感谢。

只是想添加工作配置,如果有人需要。

map $http_referer $prefix {
~https?://[^/]+/a/     a;
default                   b;
}
server {
listen       80;
server_name  localhost;
location / {
try_files /dev/null @$prefix;
}
location /a/ {
proxy_pass http://apache.org/;
}
location @a {
proxy_pass http://apache.org;
}
location /b/ {
proxy_pass http://www.gnu.org/;
}
location @b {
proxy_pass http://www.gnu.org;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/share/nginx/html;
}
}```

相关内容

  • 没有找到相关文章

最新更新