是否可以配置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;
}
}```