centos 使用tinyproxy搭建 http代理服务
作者:matrix 发布时间:2024-10-31 分类:Linux
环境: centos
install
$ yum -y install tinyproxy
config
/etc/tinyproxy/tinyproxy.conf 为配置文件
# 设置代理端口
Port 8484
# 允许连接的客户端IP
Allow 127.0.0.1
Allow 101.1.1.1
run
sudo service tinyproxy start
sudo service tinyproxy restart
sudo service tinyproxy stop
error
如果出现启动失败:
[root@VM-0-3-centos tinyproxy]# systemctl status tinyproxy.service
● tinyproxy.service - Startup script for the tinyproxy server
Loaded: loaded (/usr/lib/systemd/system/tinyproxy.service; enabled; vendor preset: disabled)
Active: failed (Result: protocol) since Fri 2022-01-14 03:20:13 CST; 4s ago
Process: 10140 ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf (code=exited, status=0/SUCCESS)
Jan 14 03:20:13 VM-0-3-centos systemd[1]: Starting Startup script for the tinyproxy server...
Jan 14 03:20:13 VM-0-3-centos systemd[1]: Can't open PID file /var/run/tinyproxy/tinyproxy.pid (yet?) after start: No such file...rectory
Jan 14 03:20:13 VM-0-3-centos systemd[1]: Daemon never wrote its PID file. Failing.
Jan 14 03:20:13 VM-0-3-centos systemd[1]: Failed to start Startup script for the tinyproxy server.
Jan 14 03:20:13 VM-0-3-centos systemd[1]: Unit tinyproxy.service entered failed state.
Jan 14 03:20:13 VM-0-3-centos systemd[1]: tinyproxy.service failed.
需要重新修改service启动脚本
/lib/systemd/system/tinyproxy.service
[Unit]
Description=Startup script for the tinyproxy server
After=network.target
[Service]
#Type=forking
Type=simple
#PIDFile=/var/run/tinyproxy/tinyproxy.pid
#ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf -d
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
[Install]
WantedBy=multi-user.target
Docker
除了上面手动安装,其实 docker 方式也很方便。
tinyproxy官方没有提供镜像,这里使用三方
# 8484 端口 && 限制访问者IP
docker run --rm -it --network host -e PORT=8484 -e ALLOWED_NETWORKS="101.1.1.1 127.0.0.1" docker.io/kalaksi/tinyproxy
docker run --rm -it -p 8484:8888 -e ALLOWED_NETWORKS="101.1.1.1 127.0.0.1" docker.io/kalaksi/tinyproxy
# 使用文件配置
docker run --rm -it --network host -v $(pwd)/tinyproxy.conf:/etc/tinyproxy/tinyproxy.conf docker.io/kalaksi/tinyproxy
https://github.com/kalaksi/docker-tinyproxy
https://github.com/StreisandEffect/streisand/issues/1381
https://www.cnblogs.com/hanzhi/articles/10729013.html
gorm写入零值问题
作者:matrix 发布时间:2024-10-21 分类:Golang
gorm中如果数据为结构体类型的零值时,不会触发零值更新。
比如当前有表结构体
type OrderTemplate struct {
ID int `gorm:"primaryKey;autoIncrement;column:id" json:"id"`
InputType int `gorm:"not null;default:1;column:input_type" json:"input_type"`
}
注意:
InputType类型为 int,设置了default为 1
当数据传入 0
,是 int 类型的默认零值0
,会认为你没有传入所以就用default值去填充。如果这里不配置default,系统也就不会写入数据。
解决方案
结构体字段使用非int
类型,如 sql.NullInt64
,*int
指针
简单点建议直接使用指针类型。使用sql.NullInt64类型传入时需要注意设置Valid为 true
sql.NullInt64{
Int64: 传入值,
Valid: true, // 表示这个传入值有效,即使它是 0
}
Valid: false 表示传入值无效,即写入默认 Null。
查询或者更新数据的时候也同样会遇到零值问题。
参考:
https://juejin.cn/post/7354940230301483017