这几天在使用Nginx反向代理我的博客的时候出现了几个问题,我把他们一一的记录下来,以后换前端服务器的时候说不定要用到。
禁止直接访问后端
由于我的后端服务器用的家用宽带,运营商给的动态IP,于是我也只能用域名+端口访问,如此一来就有后端直接暴露在公网的危险。
而除了在路由器的防火墙设置转发规则外,还可以通过Nginx直接设置指定某个IP才能访问。于是我决定在Nginx配置中加一个双保险。
可以直接在nginx.conf中添加全局配置,也可以在某个vhost.conf中为某个站点单独配置。
1 | server { |
上面的代码指定了XXX.XXX.XXX.XXX的IP地址才能访问这个站点,其他的全部拒绝。但是配置的时候要注意一定不能弄反allow和deny的顺序,nginx是从上到下匹配规则的,如果弄反,当已经匹配到deny all;的时候,就不会再查找是不是在allow列表里了。
出现504 Time-Out错误
昨天和今天早上起床,我都发现博客打不开,出现504错误。昨天我以为是端口被电信封了,换了个端口,结果就能访问了,于是就没有深究原因。
而今天,起来又是504错误,于是我就在网上搜索了一下。
网络上有的文章说,是由于php长时间运行导致出现504错误的,但是我的博客前几天连续运行了4、5天都没问题啊。按照网络上的文章修改了一下proxy_send_timeout
和proxy_read_timeout
的时间,博客又能正常访问了。
然而我发现事情并没有这么简单,博客恢复正常访问的原因大概率是因为我Reload了Nginx的原因,昨天和今天一定发生了什么事,导致早上起来博客报504错误。
上下求索了一番后发现,因该是由于家里的IP地址发生了变化,代理服务器没有对域名进行重新解析造成的,一直访问原来那个IP的端口,自然会报504错误。而reload一下的话,nginx重新解析域名,那么问题就解决了。
这个问题想要彻底解决,需要在代理服务器上设定一个定时解析域名的程序,发现IP地址发生变化的话,就Reload一下Nginx。不过这个问题对于我的能力来说已经超纲了,我就只有继续手动操作吧,发现博客报504之后来reload一下,反正博客也主要是我自己来看了。