我有这个文件:
upstream frontends {
server service-example1.example.com;
server service-example2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://frontends;
}
}
我想要做的是删除并在上游前端部分添加行。删除行非常简单:
package main
import (
"bytes"
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("nginx.conf")
if err != nil {
panic(err)
}
lines := bytes.Replace(content, []byte("server service-example1.example.com;"), []byte(""), 1)
fmt.Println(string(lines))
err = ioutil.WriteFile("nginx.conf", lines, 0644)
if err != nil {
panic(err)
}
}
然而,我发现添加我再次删除的同一行更加困难。我的方案是我要删除包含" 服务器service-example2.example.com; ",重新加载nginx conf的行。后来我想在它之前的位置添加相同的行并再次重新加载nginx。
我发现很难在文件中获得确切的字节位置,我想用*(f 文件)WriteAt 再次添加该行。我一直在看这个例子:https://play.golang.org/p/eaWYAkxyLI,但无法找到一个好方法。
任何人都知道如何解决这个问题?