Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: 修正 nginx upstream server 的参数被丢弃的问题 #223

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

hellowillwan
Copy link
Contributor

当 server web:8080 后面添了加其它参数时,会在替换时被丢弃。

v3.10.12 版演示如下:

root@jms_web:/opt# head /etc/nginx/sites-enabled/https_server.conf
# Todo: May be can auto discovery
upstream http_server {
  ip_hash;
  server web:8080 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口
  # server HOST2:80;  # 另外的要写真实IP
  server 10.189.143.92:8980 weight=6;
}
...

root@jms_web:/opt# diff /etc/nginx/sites-enabled/https_server.conf /etc/nginx/conf.d/https_server.conf
4c4
<   server web:8080 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口
---
>   server localhost:51980;  # 这个是可以通过容器访问, 外部访问是 80端口

'weight=10' 被丢弃了。

修正后,不同情况的测试结果如下:

$ echo 'server web:8080 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口' | sed "s@server web[:0-9]*@server localhost:51980@g"
server localhost:51980 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口

$ echo 'server web:8080;  # 这个是可以通过容器访问, 外部访问是 80端口' | sed "s@server web[:0-9]*@server localhost:51980@g"
server localhost:51980;  # 这个是可以通过容器访问, 外部访问是 80端口

$ echo 'server web;  # 这个是可以通过容器访问, 外部访问是 80端口' | sed "s@server web[:0-9]*@server localhost:51980@g"
server localhost:51980;  # 这个是可以通过容器访问, 外部访问是 80端口

当 web:8080 后面添了加其它参数时,会在替换时被丢掉。

v3.10.12 版演示如下:
```
root@jms_web:/opt# head /etc/nginx/sites-enabled/https_server.conf
# Todo: May be can auto discovery
upstream http_server {
  ip_hash;
  server web:8080 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口
  # server HOST2:80;  # 另外的要写真实IP
  server 10.189.143.92:8980 weight=6;
}
...

root@jms_web:/opt# diff /etc/nginx/sites-enabled/https_server.conf /etc/nginx/conf.d/https_server.conf
4c4
<   server web:8080 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口
---
>   server localhost:51980;  # 这个是可以通过容器访问, 外部访问是 80端口
```

测试
```
$ echo 'server web:8080 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口' | sed "s@server web[:0-9]*@server localhost:51980@g"
server localhost:51980 weight=10;  # 这个是可以通过容器访问, 外部访问是 80端口

$ echo 'server web:8080;  # 这个是可以通过容器访问, 外部访问是 80端口' | sed "s@server web[:0-9]*@server localhost:51980@g"
server localhost:51980;  # 这个是可以通过容器访问, 外部访问是 80端口

$ echo 'server web;  # 这个是可以通过容器访问, 外部访问是 80端口' | sed "s@server web[:0-9]*@server localhost:51980@g"
server localhost:51980;  # 这个是可以通过容器访问, 外部访问是 80端口
```
@ibuler
Copy link
Member

ibuler commented Oct 18, 2024

呼声不是很高,先合并了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants