Nginx作为一款高性能的HTTP和反向代理服务器,以其在高并发连接的情况下,内存、CPU等系统资源消耗非常低且运行稳定而闻名,根据W3Techs最新公布的数据,在排名前1000的网站中,Nginx占据了将近三分之一的席位(29.1%),已经取代了IIS(仅为12.7%)第二名的位置。当然,Apache还是当之无愧的老大,占39.1%。
Nginx不仅在http和反向代理服务器上表现优异,作为http正向代理同样表现不俗,但是笔者在使用中却发现nginx作为正向代理无法访问非80端口(nginx版本为1.0.8),Nginx配置如下:

打开nginx的流水日志,并将$host和$request_uri打印出来发现,$host中确实没有端口信息,所以无论是访问什么端口,nginx转发时都转发到了默认端口(一般为80)。

本文介绍了Nginx作为高性能HTTP和反向代理服务器的广泛应用,并探讨了在作为正向代理时遇到无法访问非80端口的问题。通过分析Nginx的配置和日志,发现没有直接获取目标端口的变量。作者提出了一种解决方案,即通过增加新的server配置监听特定端口来代理非80端口的请求,虽然不够优雅,但适用于非80端口访问较少的情况。期待未来Nginx版本能对此提供更简便的支持。

1642

被折叠的 条评论
为什么被折叠?



