更新 一次只能加载一个网站的行为似乎与客户端浏览器有关 - 如果我在一个浏览器窗口中打开所有 3 个网站(每个一个选项卡),则会出现下面描述的行为。如果我使用 3 个独立的浏览器(我使用了 Edge、Opera 和 Chrome),则所有 3 个网站都会按预期加载。 /更新
我有一个 Nginx 反向代理设置,可根据 URL 将外部流量传递到 3 个内部服务器之一(运行 IIS 10 的 Windows Server 2019)(这用于测试环境)。nginx 服务器和 Web 服务器都在同一个 vlan 中。
一切一直按预期运行,直到今天早上,在重新启动 Web 服务器后,nginx 现在只能一次加载 3 个站点中的一个。
如果我尝试打开所有 3 个网站,第一个网站会正常加载,其他 2 个网站会立即出现 404 错误。如果我等待几分钟并刷新其中一个 404,它会加载,但第一个正常加载的网站现在会变成 404,如果加载第三个网站,也会发生同样的情况。
Nginx 配置尚未更改,并且在今天早上重启之前同时加载所有 3 个站点。
我已经使用 nginx -t 测试了 nginx conf,结果正常。我已经使用 sudo systemctl reload nginx 重新加载了 nginx conf - 行为没有变化。我已经重新启动了 nginx 服务器 - 行为没有变化。
直接浏览网络服务器,所有 3 个站点均正常运行。
我可以通过 nginx 的 443 端口 telnet 到所有 3 个 Web 服务器,反之亦然。
对于行为发生改变的原因,有什么建议吗?
nginx 配置如下(我已经替换了实际的 URL,但是配置没有改变):
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 1024;
# multi_accept on;
}
#added by Ian to allow streaming
stream {
# To add additional websites and servers:
# Add the hostname and backend label to the map, then add the upstream blocks, as in the commented example below.
# ***Once you have updated the config you MUST reload nginx with the following command: sudo systemctl reload nginx
map $ssl_preread_server_name $name {
url.1.com GunServer;
url.2.com CatServer;
url.3.com BlueServer;
# <hostname of website goes here> <text label for the backend server goes here>;
# example: mywebsite.com myserver;
}
# Then create a new upstream block using the label set above as shown below
# upstream myserver {
# server <IP:port>;
#}
upstream GunServer {
server 10.25.2.12:443;
}
upstream CatServer {
server 10.25.2.13:443;
}
upstream BlueServer {
server 10.25.2.11:443;
}
server {
listen 443;
proxy_pass $name;
ssl_preread on;
}
}
# all settings below this line were from nginx example conf