小编Kli*_*mbo的帖子

NGINX open() 失败 (20: Not a directory) hls vod with secure link module

我对 hls 流的 nginx 配置有问题。我使用kaltura nginx vod 模块并尝试添加ngx_http_secure_link_module以保护流。奇怪的是,如果我启用ngx_http_secure_link_module(下面的日志),我会出现 404 错误。我认为这是因为它在末尾找不到带有 index.m3u8 的文件,但是如果我评论安全链接块,它就可以正常工作。

我也尝试在location ~ \.m3u8$ {}块内添加别名,但没有用。我究竟做错了什么?如何保护我的流?

我的直播链接: https://stream.example.com/hls/c14de868-3130-426a-a0cc-7ff6590e9a1f/index.m3u8?md5=0eNJ3SpBd87NGFF6Hw_zMQ&expires=1609448340

我的 NGINX 配置:

server {
  listen 9000;
  server_name localhost;
  # root /srv/static;

  location ^~ /hls/ {
    # the path to c14de868-3130-426a-a0cc-7ff6590e9a1f file
    alias /srv/static/videos/1/;
    # file with cors settings
    include cors.conf;

    vod hls;

    # 1. Set secret variable
    set $secret "s3cr3t";

    # 2. Set secure link
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "$secure_link_expires $secret";

    # if …
Run Code Online (Sandbox Code Playgroud)

nginx video-streaming http-live-streaming kaltura vod

14
推荐指数
1
解决办法
640
查看次数

NGINX 从 proxy_pass 响应中读取正文

我有两台服务器:

  1. NGINX(它将文件 id 交换为文件路径)
  2. Golang(它接受文件 id 并返回它的路径)

例如:当浏览器客户端向 发出请求时https://example.com/file?id=123,NGINX 应将此请求代理到 Golang 服务器https://go.example.com/getpath?file_id=123,后者会将响应返回给 NGINX:

{
  data: {
    filePath: "/static/..."
  },
  status: "ok"
}
Run Code Online (Sandbox Code Playgroud)

然后 NGINX 应该从 filePath 获取值并从该位置返回文件。

所以问题是如何在 NGINX 中读取响应(获取文件路径)?

lua nginx proxypass

8
推荐指数
1
解决办法
7369
查看次数

如何使 PostgresQL 在重新创建容器后使用 .env 文件中的环境变量(不删除卷)

Docker PostgresQL 文档中有一条消息:

警告:只有当您使用空数据目录启动容器时,Docker 特定变量才会生效;容器启动时任何预先存在的数据库都将保持不变。

docker-compose down因此,当我使用and重新创建 postgres 容器时docker-compose up -d --remove-orphans,它会抛出如下错误:

致命:用户“myuser”的密码身份验证失败

发生这种情况是因为 postgres 看到存在该卷,因此它会跳过所有脚本和 .env 文件(我在其中设置POSTGRES_USERPOSTGRES_PASSWORD)。

如何解决这个问题?(我的意思是每次重新创建 postgres 容器时都从 .env 文件提供变量)

ps 我不可能删除旧卷,因为我那里有数据。

这是我的docker-compose.yml文件:

postgres:
    image: postgres:alpine
    restart: always
    expose:
      - 5432
    volumes:
      - "./init/postgres:/docker-entrypoint-initdb.d"
      - "./data/postgres_data:/var/lib/postgresql/data"
    environment:
      POSTGRES_DB:       ${POSTGRES_DB}
      POSTGRES_USER:     ${POSTGRES_USR}
      POSTGRES_PASSWORD: ${POSTGRES_PWD}
Run Code Online (Sandbox Code Playgroud)

我的 .env 文件:

# Postgres
export POSTGRES_USR="someuser"
export POSTGRES_PWD="somepwd"
export POSTGRES_DB="somedb"
export POSTGRES_URL="postgres://${POSTGRES_USR}:${POSTGRES_PWD}@postgres:5432/${POSTGRES_DB}?sslmode=disable"
Run Code Online (Sandbox Code Playgroud)

postgresql environment-variables docker docker-compose

7
推荐指数
1
解决办法
4万
查看次数

go get 不适用于引用自定义 gitconfig 的 .gitconfig

我克隆了git clone一个依赖于另一个私有存储库的存储库。在当前的 repo 中,我尝试使用go get该依赖项 ( go get -u ./...) 并抛出一个错误:

致命:无法读取“https://bitbucket.org”的用户名:终端提示已禁用

信息

  • 我曾经git clone git@my-name.bitbucket.org:company/repo.git将 repo 克隆到~/Desktop/BitBucket/Company目录。
  • 我有 GOPRIVATE="bitbucket.org/company/*"
  • 没有includeIf. 如果我用公司 .gitconfig替换.gitconfig它工作正常。但是我需要管理多个帐户...
  • 命令git config --get user.name(在 repo 内)返回My Name. 所以有一个问题go get

我的主要 .gitconfig文件(在 $HOME 目录中):

[includeIf "gitdir/i:~/Desktop/BitBucket/Company/"]
        path = ~/.git/BitBucket/Company/.gitconfig
Run Code Online (Sandbox Code Playgroud)

我的.gitconfig文件(用于公司仓库$HOME/.git/BitBucket/Company/.gitconfig):

[user]
        name = My Name
        email = my.name@company.com
[url "git@my-name.bitbucket.org:"]
        insteadOf = …
Run Code Online (Sandbox Code Playgroud)

git git-config go-get

6
推荐指数
1
解决办法
164
查看次数

如何解决空 docker-entrypoint-initdb.d 的问题?(PostgresQL + Docker)

这是我的项目结构的一部分:

在此输入图像描述

这是我的 docker-compose.yml 文件的一部分: docker-compose.yml

这是我的 Dockerfile(位于 postgres-passport 文件夹内): docker文件

我有 init.sql 脚本,它应该创建用户、数据库和表(用户和数据库与 docker-compose.yml 文件中的相同)

但是当我查看 docker-entrypoint-initdb.d 文件夹时,它是空的(没有 init.sql 文件)。我使用这个命令:

docker execlatest_postgres-passport_1 ls -l docker-entrypoint-initdb.d/

在我的服务器(Ubuntu)上我看到: 空文件夹

我需要你的帮助,我做错了什么?(如何使用 init.sql 脚本复制文件夹。Postgres 告诉我

/usr/local/bin/docker-entrypoint.sh:忽略/docker-entrypoint-initdb.d/*

(因为他找不到这个文件夹)

以下所有代码均为文本格式:

完整的 docker-compose.yml:

version: '3'

volumes:
  redis_data: {}
  proxy_certs: {}
  nsq_data: {}
  postgres_passport_data: {}
  storage_data: {}

services:

  # ####################################################################################################################
  # Http services
  # ####################################################################################################################
  back-passport:
    image: ${REGISTRY_BASE_URL}/backend:${TAG}
    restart: always
    expose:
      - 9000
    depends_on:
      - postgres-passport
      - redis
      - nsq
    environment:
      ACCESS_LOG: ${ACCESS_LOG}
      AFTER_CONFIRM_BASE_URL: ${AFTER_CONFIRM_BASE_URL}
      CONFIRM_BASE_URL: ${CONFIRM_BASE_URL}
      COOKIE_DOMAIN: ${COOKIE_DOMAIN}
      COOKIE_SECURE: …
Run Code Online (Sandbox Code Playgroud)

postgresql docker dockerfile docker-compose

4
推荐指数
1
解决办法
2万
查看次数

是否可以在 Golang 的帮助下创建具有动态名称的 PostgreSQL 数据库?

我在后端使用 Go。我尝试编写一个函数,该函数采用数据库名称并使用该名称创建 PostgreSQL 数据库。在这个函数应该在这个数据库中创建表之后(我已经为此任务创建了一个 sql 脚本)

所以主要问题是我不明白如何编写一个将创建 PostgreSQL 数据库的函数。我想创建一个 .sql 文件并以某种方式将数据库名称传递给这个文件(例如在 .sql 文件中查找字符串,它看起来像 {{dbname}} 并将其替换为 db 名称),但可能有一个更好的方法?

这是我的 .sql 文件,它应该在新的 PostgreSQL 数据库中创建表

create table "reviews"
(
  review_id  uuid  not null
    constraint review_pk
      primary key,
  user_id  uuid  not null,
  rating  float,
  comment text,
  date  date  not null
);

create unique index reviews_review_id_uindex
  on "reviews" (review_id);

create unique index reviews_user_id_uindex
  on "reviews" (user_id);

create table "sections"
(
  section_id  uuid  not null
    constraint section_pk
      primary key,
  title  text  not null,
  color  text,
  created_at …
Run Code Online (Sandbox Code Playgroud)

sql database postgresql go

2
推荐指数
1
解决办法
1979
查看次数

如何使用 html 模板解组结构?

我正在尝试将 JSON 解组到我的 Mail 结构,但 Go 在解析 html_tmpl 和 text_tmpl 字段时返回错误。我怎么解决这个问题?

HtmlTmpl 字段来自:

html, err := template.ParseFiles(pathToHTMLFile)
Run Code Online (Sandbox Code Playgroud)

这是您可以测试的基本示例

package main

import (
    "encoding/json"
    "fmt"
    "html/template"
    "time"
)

type Mail struct {
    Id       string            `json:"id"`
    Subject  string            `json:"subject"`
    From     string            `json:"from"`
    To       string            `json:"to"`
    Date     time.Time         `json:"date"`
    HtmlTmpl template.Template `json:"html_tmpl"`
    TextTmpl template.Template `json:"text_tmpl"`
    Context  map[string]string `json:"context"`
}

func main() {
  mail := &Mail{}
  s := `{"id":"","subject":"Test mail","from":"support@example.com","to":"user@gmail.com","date":"0001-01-01T00:00:00Z","html_tmpl":{"Tree":{"Name":"template.html","ParseName":"template.html","Root":{"NodeType":11,"Pos":0,"Nodes":[{"NodeType":0,"Pos":0,"Text":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9InJ1Ij4KPGhlYWQ+Cgk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbCIgY2hhcnNldD0iVVRGLTgiPgoJPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbD0xIj4KCTxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+Cgk8dGl0bGU+0J/RgNC+0LLQtdGA0LrQsCDRgdCy0Y/Qt9C4PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KCTxzcGFuPg=="},{"NodeType":1,"Pos":298,"Line":10,"Pipe":{"NodeType":14,"Pos":298,"Line":10,"IsAssign":false,"Decl":null,"Cmds":[{"NodeType":4,"Pos":298,"Args":[{"NodeType":8,"Pos":298,"Ident":["msg"]}]}]}},{"NodeType":0,"Pos":305,"Text":"PC9zcGFuPgo8L2JvZHk+CjwvaHRtbD4="}]}}},"text_tmpl":{"Tree":{"Name":"template.txt","ParseName":"template.txt","Root":{"NodeType":11,"Pos":0,"Nodes":[{"NodeType":1,"Pos":2,"Line":1,"Pipe":{"NodeType":14,"Pos":2,"Line":1,"IsAssign":false,"Decl":null,"Cmds":[{"NodeType":4,"Pos":2,"Args":[{"NodeType":8,"Pos":2,"Ident":["msg"]}]}]}}]}}},"context":{"msg":"Hi!"}}`
  err := json.Unmarshal([]byte(s), mail)

  fmt.Println(err)
  fmt.Println(mail)
}
Run Code Online (Sandbox Code Playgroud)

json struct go unmarshalling go-templates

1
推荐指数
1
解决办法
655
查看次数

如何将 pgtype.Int4Array (来自 pgx 库)转换为 []int64 Golang 类型?

我使用 Go 和 Postgres (带有pgx 驱动程序

在我的 Postgres 表中,我有一个包含整数数组的字段。我创建了一个变量来存储扫描后的整数数组。

var ids pgtype.Int4Array
Run Code Online (Sandbox Code Playgroud)

如何转换ids[]int64

postgresql go pgx

0
推荐指数
1
解决办法
2567
查看次数