0 iis nginx reverse-proxy proxypass
upstream
当代理服务器在同一端口上绑定多个主机名时,此功能不起作用。
我在尝试将nginx (1.9.12-1~trusty)配置到Windows Server 2012proxy_pass
主机时遇到了这个问题。
我在自己的Windows 10机器上重现了相同的行为。
在下面的配置中,所有主机名都指向同一机器 IP。
有时要求工作
注意:我预计这是localhost:7778
选择代理的时间。
http {
upstream w {
server test1:80;
server test2:80;
server localhost:7778;
}
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://w;
}
}
}
Run Code Online (Sandbox Code Playgroud)
请求始终不起作用
注:按照 Alexey 指出的进行编辑。
http {
upstream w {
server test1:80;
server test2:80;
# server localhost:7778;
}
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://w;
}
}
}
Run Code Online (Sandbox Code Playgroud)
请求始终有效
http {
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://test1:80;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者
http {
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://test2:80;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者
http {
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://localhost:7778;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有解决的办法?
当您proxy_pass
不带proxy_set_header
指令使用时,nginx 将使用一些默认标头。大多数情况下,这是您想要的,或者至少是无害的,但在您的情况下,您必须手动设置它们。
当你写的时候proxy_pass http://w
,nginx就会设置proxy_set_header Host w
。如果您需要另一个Host
标头,您应该明确设置它。最常见的是使用proxy_set_header Host $host
(或proxy_set_header Host $http_host
)。
所以这应该适合你:
upstream w {
server test1:80;
server test2:80;
server localhost:7778;
}
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://w;
proxy_set_header Host $host;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17242 次 |
最近记录: |