背景
nginx中經(jīng)常有這樣的場(chǎng)景,多個(gè)server塊共用一個(gè)域名。
如:upstream有2個(gè)以上的域名,nginx配置兩個(gè)server塊,共用一個(gè)upstream配置。
那么,如果其中一個(gè)域名發(fā)生"no live upstreams while connecting to upstream"錯(cuò)誤,會(huì)不會(huì)影響另一個(gè)域名呢?
先說結(jié)論
會(huì)。導(dǎo)致另一個(gè)域名會(huì)返回5xx,并且也報(bào)錯(cuò)"no live upstreams while connecting to upstream"
模擬錯(cuò)誤"no live upstreams"
環(huán)境
機(jī)器 | ip | 作用 |
---|---|---|
test1 | 192.168.10.129 | nginx代理服務(wù)器 |
test2 | 192.168.10.130、192.168.10.150 | upstream服務(wù)器(用nginx模擬) |
test1配置(角色:nginx代理)
配置域名解析:
vim /etc/hosts
# 將域名解析到本機(jī),待會(huì)兒在本機(jī)測(cè)試
127.0.0.1 test1.com
127.0.0.1 test2.com
nginx配置:
error_log /var/log/nginx/error.log;
server {
listen 80;
listen [::]:80;
server_name test1.com;
location /test {
proxy_set_header Host $host;
proxy_next_upstream http_502; # 關(guān)鍵配置:遇到502,則嘗試下一個(gè)upstream server
proxy_pass http://test;
}
}
server {
listen 80;
listen [::]:80;
server_name test2.com;
location /test {
proxy_set_header Host $host;
proxy_pass http://test;
}
}
upstream test {
server 192.168.10.130 max_fails=1 fail_timeout=15s;
server 192.168.10.150 max_fails=1 fail_timeout=15s;
}
test2配置(角色:upstream)
server {
listen 80;
listen [::]:80;
server_name test1.com;
location /test {
return 502 "test1.com"; # 關(guān)鍵配置:返回502,模擬錯(cuò)誤
}
}
server {
listen 80;
listen [::]:80;
server_name test2.com;
location /test {
return 200 "test2.com";
}
}
測(cè)試
在哪里測(cè)試?test1
curl -i http://test2.com/test # 快速運(yùn)行多遍,發(fā)現(xiàn)不報(bào)錯(cuò)。
curl -i http://test1.com/test # 快速運(yùn)行多遍,觀察/var/log/nginx/error.log會(huì)報(bào)錯(cuò):"no live upstreams"
curl -i http://test2.com/test # 報(bào)錯(cuò)后,立即執(zhí)行此命令。發(fā)現(xiàn)也報(bào)錯(cuò)了。
得出結(jié)論:nginx中多個(gè)server塊共用upstream會(huì)相互影響
建議
如果影響業(yè)務(wù),有2種解法:
- 將重要的服務(wù)的upstream分離出來。(實(shí)測(cè)不會(huì)相互影響)
- 調(diào)整max_fails和fail_timeout參數(shù),如
server 192.168.10.130 max_fails=99999 fail_timeout=5s;
文章來源:http://www.zghlxwxcb.cn/news/detail-792133.html
那年,郭少在京城
這篇文章的最新版請(qǐng)看我的另一個(gè)博客:https://www.cnblogs.com/NetRookieX/p/17959533
文章來源地址http://www.zghlxwxcb.cn/news/detail-792133.html
到了這里,關(guān)于nginx中多個(gè)server塊共用upstream會(huì)相互影響嗎的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!