我对 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) 我有两台服务器:
例如:当浏览器客户端向 发出请求时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 中读取响应(获取文件路径)?
Docker PostgresQL 文档中有一条消息:
警告:只有当您使用空数据目录启动容器时,Docker 特定变量才会生效;容器启动时任何预先存在的数据库都将保持不变。
docker-compose down因此,当我使用and重新创建 postgres 容器时docker-compose up -d --remove-orphans,它会抛出如下错误:
致命:用户“myuser”的密码身份验证失败
发生这种情况是因为 postgres 看到存在该卷,因此它会跳过所有脚本和 .env 文件(我在其中设置POSTGRES_USER和POSTGRES_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) 我克隆了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) 这是我的项目结构的一部分:
这是我的 docker-compose.yml 文件的一部分:

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

我有 init.sql 脚本,它应该创建用户、数据库和表(用户和数据库与 docker-compose.yml 文件中的相同)
但是当我查看 docker-entrypoint-initdb.d 文件夹时,它是空的(没有 init.sql 文件)。我使用这个命令:
docker execlatest_postgres-passport_1 ls -l docker-entrypoint-initdb.d/
我需要你的帮助,我做错了什么?(如何使用 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) 我在后端使用 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) 我正在尝试将 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) 我使用 Go 和 Postgres (带有pgx 驱动程序)
在我的 Postgres 表中,我有一个包含整数数组的字段。我创建了一个变量来存储扫描后的整数数组。
var ids pgtype.Int4Array
Run Code Online (Sandbox Code Playgroud)
如何转换ids为[]int64?
postgresql ×4
go ×3
docker ×2
nginx ×2
database ×1
dockerfile ×1
git ×1
git-config ×1
go-get ×1
go-templates ×1
json ×1
kaltura ×1
lua ×1
pgx ×1
proxypass ×1
sql ×1
struct ×1
vod ×1