运维向 2
Nginx 不接受带下划线 header 的问题
最近接了一个下云的项目,把10个甚至9个”微“服务移动至本地,没想到最后还要被 Nginx 坑一把,这里介绍一下 debug 过程。
首先是项目 auth 模块是正常的,Login Request 正常返回 access_token 还有 refresh_token 。
然后登录后查询接口的情况都是 401 的状态,服务端也看不到什么相关错误日志,然后试着直接请求源站,是正常的。
于是看了下 header 情况,调试四五轮后,发现了 header 不标准的问题。
这里部分 header 用了下划线作为连接,在我之前经验里几乎没有碰到过下划线:
因此猜测我现在使用的 Nginx proxy 后会丢弃非标准的 http header,于是向 chatgpt 求助:
于是知道了有个配置:
underscores_in_headers on;
可以让 Nginx 接受下划线的 header…
想到 Nginx 都用了至少10年了,第一次知道这种东西
OpenWrt wan 访问 luci
/etc/config/uhttpd
将
option rfc1918_filter '0'
改成
option rfc1918_filter '1'
/etc/config/firewall
最后一行后面追加:
config rule
option name allow-http
option src wan
option proto tcp
option dest_port 80
option target ACCEPT
开 ssh (dropbear) 同理:
config rule
option name allow-ssh
option src wan
option proto tcp
option dest_port 22
option target ACCEPT
重启服务
/etc/init.d/firewall restart
/etc/init.d/uhttpd restart
pve 中自定义证书
参照: https://pve.proxmox.com/wiki/Certificate_Management
For options 2 and 3 the file /etc/pve/local/pveproxy-ssl.pem (and /etc/pve/local/pveproxy-ssl.key, which needs to be without password) is used.
于是我们手动执行证书更新脚本增加几行即可:
cp xxx.crt /etc/pve/local/pveproxy-ssl.pem
cp xxx.key /etc/pve/local/pveproxy-ssl.key
systemctl reload pveproxy.service
另外注意:
Do not replace or manually modify the automatically generated node certificate files in /etc/pve/local/pve-ssl.pem and /etc/pve/local/pve-ssl.key or the cluster CA files in /etc/pve/pve-root-ca.pem and /etc/pve/priv/pve-root-ca.key.
这两个应该是 pve 内部沟通用的 key 什么的,千万不要改这两个,改 pveproxy-ssl 才对