如何只为特定主机记录主机?

时间:2018-12-06 01:19:22

标签: nginx

我可以通过以下方式仅记录引用者的路径:

map $http_referer $just_path {
  "~^(?P<path>[^?]*)(\?.*)?$" $path;
}

基本上,我不想记录引用者的查询字符串。但是,有些请求来自我们自己,对于那些我只想记录scheme + host而没有路径的请求(例如http://www.example.com)。

在仍然为其他所有人记录scheme + host + path的同时如何实现?简而言之:

Site A: http://sitea.com/this/path?v=true -> http://sitea.com/this/path
Site B: https://siteb.com/another/path?another=query -> https://siteb.com/another/path
Our Site: https://www.example.com/this/other/path?x=true&v=false -> https://www.example.com/

1 个答案:

答案 0 :(得分:1)

正则表达式是按顺序求值的,因此您可以在必须与自己的主机名匹配的行之前放置新行。

例如:

ctx := context.Background()
projectID := "XXXXXXXXX"
jsonPath:="XXXXX.json"
client, err := bigquery.NewClient(ctx, projectID,option.WithCredentialsFile(jsonPath))
if err != nil {
   fmt.Println ("Failed to create client: %v", err)
   return
}
destDatasetID:="dataset1"
destTableID:="table1"
q := client.Query("SELECT * from table1")
q.Location = "EU" // Location must match the dataset(s) referenced in query.
q.QueryConfig.Dst = client.Dataset(destDatasetID).Table(destTableID)
q.AllowLargeResults = true
fmt.Println("prepare complete")
it, err := q.Read(ctx)
if err != nil {
   fmt.Println("Error on read %v",err)
   return
}

有关详细信息,请参见this document