All posts by 龙生

踩坑备忘录—Nginx反向代理之server_name与ip

我们的系统依赖一个第三方的服务,该服务是通过IP限制访问权限的。出于安全考虑,我们的系统会校验证书,因此我们采用Nginx反向代理去访问该服务。该服务迁移到cloud上之后,我们系统出现了问题。 Nginx的配置文件如下所示:

  Debug 在出现线上问题的时候,第一时间检查了配置文件的改动记录 ⇒ 配置文件没有改到。 接着检查了,证书是否过期⇒没有过期。 通过域名curl请求 ⇒ 第三方服务正常,证书正确。 在我们没有任何改动的情况下,第三方服务也是单纯地做了迁移,然后就挂了。 思考了很久之后,Nginx没有任何改动,那么出问题的一定不是我们。那么出问题一定是第三方,最直接的方式是联系第三方提供商,联系渠道很繁琐,时间成本也会很高。为了快速修复问题,我们决定盲调Bug。 尝试解决 第一次尝试,已知curl请求一切正常。尝试着将upstream干掉,直接写道proxy_path中。依旧是失败,错误日志中出现了”https://1.1.1.1:443 TLS handshake failed”。推断,proxy_path会将域名转换成ip。 第二次尝试,尝试检查curl ip来访问服务。失败。推断,IP和域名指向了两个不同的服务。到这里算是找到root cause了。 解决思路:反向代理时候,通过域名访问而不是IP访问。 查询文档,发现可以使用配置项:proxy_ssl_server_name,该配置项默认值是off,需要将一些内容写到配置文件中:

  第三次尝试,将proxy_ssl_server_name on写入到配置文件中。成功。 什么是server_name 服务器名称指示(Server Name Indication, SNI)是对TLS协议的扩展。在握手过程开始时,通过该协议,客户端指示其尝试连接的主机名。该协议允许服务器上的同一个IP和TCP端口拥有多个证书,因此允许同一个IP地址为多个HTTPS网站提供服务,且无需所有网站使用相同的证书。   from:https://www.realks.com/2021/03/07/nginx-proxy-ssl-server-name/

龙生   18 Feb 2022
View Details

docker export import后,导入镜像,启动时的错误,Error response from daemon: No command specified

Docker的流行与它对容器的易分享和易移植密不可分,用户不仅可以把容器提交到公共服务器上,还可以把容器导出到本地文件系统中。同样,我们也可以把导出的容器重新导入到Docker运行环境中。Docker的容器导入导出分别用import和export命令完成。

龙生   18 Feb 2022
View Details

docker: Error response from daemon: No command specified. 解决

一般来说产生这个报错是因为启动的容器是被docker export出来的镜像。
Command可以通过下面命令查询到:docker ps -a --no-trunc
查询到Command之后,运行容器:docker run --name nginx-import-test -d -p 4000:80 nginx-import-test:1.0 /docker-entrypoint.sh nginx -g 'daemon off;'

龙生   18 Feb 2022
View Details

Allow Zero Datetime=True产生的问题

MySQL连接字符串里加上了“Allow Zero Datetime=True”,导致错误:

纠基原因,这句配置允许零日期后,MySQL与.Net的日期类型是不一样的,导致转换失败。去掉就正常了,默认值是False。

 

龙生   17 Feb 2022
View Details

telnet常用命令有什么

telnet常用命令有:
close 关闭当前连接
logout 强制退出远程用户并关闭连接
display 显示当前操作的参数
mode 试图进入命令行方式或字符方式

龙生   16 Feb 2022
View Details

nginx 414 Request-URI Too Large

可能原因
场景1.cookie中写入的值太大造成的,因为header中的其他参数的size一般比较固定,只有cookie可能被写入较大的数据
场景2.请求参数太长,比如发布一个文章正文,用urlencode后,使用get方式传到后台。

龙生   15 Feb 2022
View Details

阿里云主机通过Docker安装L2TP

公司业务对接某第三方服务的需要,因为对方服务器白名单机制,需要一个固定IP. 而悲催的是由于公司网络环境无法提供公网IP,只好在外网测试机上面部署一个vpn来进行中转.PPTP因为安全原因现在osx和windows10好像都废弃了,那就直接上l2tp吧!想起以前搭建vpn那累死人的重复劳动,果断使用Docker集装箱.

龙生   15 Feb 2022
View Details

centos系统yum remove iptables后无法登录的补救办法

如果你yum remove iptables,那么你遇上大麻烦了。
首先你看看你的主机服务器商后台是否有vnc连接功能,国外linode的好像叫做lish ssh
首先,确认这个方式可以登录你的主机,恭喜有办法补救。

龙生   13 Feb 2022
View Details

remove iptables 后的补救措施

恩,惨痛的教训。因为remove iptables会卸载很多系统组建,导致出现很多问题,比如无法上网,比如中文字体变成乱码。但只要还没重启服务器,还是有补救措施的。

龙生   13 Feb 2022
View Details

Docker搭建L2TP-VPN服务器

(1)首先需要在 Docker 主机上加载 IPsec af_key 内核模块:
(2)使用本镜像创建一个新的 Docker 容器 (将 ./vpn.env 替换为你自己的 env 文件)
(3)创建一个新的 Docker 容器 (将 ./vpn.env 替换为你自己的 env 文件)

龙生   12 Feb 2022
View Details
1 70 71 72 414