我有一个用作负载平衡器的站点。站点 A。
我还有其他网站只能有一个域名。因此,如果我重定向到这些网站,系统会提示“找不到主机名”。
因此,如果我手动将标题设置为某个值,那么只会显示该站点。
我如何设置proxy_set_header Host xxxx
所选的服务器地址。这样,每个重新路由请求都会有不同且合适的主机标头。
如果我的其他 2 个网站可以基于 url 而不是主机头工作,那就没有问题了。
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
error_log logs/error.log debug;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream myapp1 {
#server localhost:3333;
server www.asd.com:80;
}
server {
listen 80;
location / {
proxy_set_header Host $upstream_addr; // should become somehow www.asd.com right now this code doesn't work
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://myapp1;
}
}
}
答案1
您需要将标头设置为传入的主机变量,如文档所述这里:
proxy_set_header Host $host;
答案2
本质上,在选择上游之前,标头就已经固定好了。如果您无法让所有上游都响应单个 Host: 标头,则必须在设置标头的同时固定上游。