以下是我部署的服务器:
客户端—— nginx代理(example.com)——后端服务器(192.168.1.20)
nginx代理的外部URL是在一个虚拟目录http://example.com/demo/下configuration的。后端服务器configuration为http://192.168.1.20:8080/
以下是nginxconfiguration文件的一部分:
location /demo { proxy_pass http://192.168.1.20:8080/; proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
当后端服务器发送具有LOCATION头部字段“ http://192.168.1.20/subdir/ ”的redirect响应(HTTP CODE 302)时,nginx将该LOCATION头部字段映射到“ http://example.com/ subdir /“,而不是disired” http://example.com/ demo / subdir /“
后端应用程序必须知道虚拟主机,像Zope虚拟主机怪物和其他解决scheme,基本上它必须有一种方法来知道它是在虚拟/代理服务器后面,并相应地重写内部URL,重写等。
至less,内部应用程序必须写入其重写和URL相对于外部path。 在这个例子中,内部应用程序可能会发送redirect到/subdir
而不是/demo/subdir
。