情景概述
本次任务主要涉及了网络技术领域的知识,具体包括nginx的编译安装、反向代理的基本配置、路由端口映射以及网络域名的使用等。目标是实现通过浏览器输入特定域名,能够访问到内网不同机器的指定端口。
实验目标
目标是在浏览器中输入xxx123.tk时,能够成功访问到内网机器192.168.10.38的3000端口;同样,输入xxx456.tk则能够访问到内网机器192.168.10.40的80端口。
配置步骤详解
在服务器ubuntu 12.04上进行如下操作:
- 更新软件仓库,确保系统软件包为最新版本。
- 下载nginx及相关软件包,包括用于编译rewrite模块的pcre和支持gzip功能的zlib。
- 注意:此处的nginx版本稍显陈旧,是为了配合后续的实验而选择的版本。如需使用新版本,可进行相应调整。
- 安装编译环境,为后续的软件编译做准备。
- 创建nginx运行所需的非用户,也称作unprivileged user。
- 开始nginx的编译和安装过程。
- 对安装文件夹进行权限设置,确保nginx可以正常访问所需文件。
- 重新加载nginx配置,使配置生效。将xxx123.tk和xxx456.tk域名指向公司静态IP。
如此便实现了输入对应域名即可访问内网指定端口的功能。
问题与解决
在配置过程中,曾遇到访问时偶尔出现504 gateway timeout的问题。
从日志分析,很可能是后端服务器响应超时导致的。为了验证这一假设,进行了实验性调整:将代理超时阀值设置为极小值(如1ms)以尝试每次触发504错误。当proxy_read_timeout参数设置为1ms时,每次访问都出现504错误。
我们将该参数值调大,并加入了之前的配置,从而解决了问题。
整个过程中,通过合理推测、实验和验证,最终找到了问题的根源并成功解决。