Skip to content

使用 Host 配置 + Ngnix 本地调试 web API

Published: at 14:32

场景

正常流程:客户端程序 -> 访问 API -> 部署在服务器的 Web API

改造之后:客户端程序 -> 访问 API -> Host 配置,将域名解析到本地 -> Ngnix 配置,将端口解析到本地指定端口 -> 运行在本机的 Web API 服务

目的当然是为了调试方便,通常这里的域名,也会是开发/测试环境的域名。

为什么不使用 Postman 等类似的工具?

Postman 只能测试单个接口,直接使用真实的客户端程序,类似于集成测试,可以用于调试一些 Postman 不好模拟和复现的问题。

配置

Host 配置

127.0.0.1 business-dev.test.jgrass.com

因为 Host 配置只能映射域名,就需要 Ngnix 配置反向代理来处理。

Ngnix 配置:将 80 端口映射到 8081 端口,真实的服务跑在本机 8081 端口上。

server {
listen 80;
server_name business-dev.test.jgrass.com;
location / {
proxy_pass http://127.0.0.1:8081;
}
}

总觉得有只使用 Ngnix 就可以实现此功能的方法,上面的方法解决了问题,暂时没有继续探索,要解 BUG 去了。(⊙﹏⊙)

其它

在使用 Ngnix 时,遇到一个错误,

nginx: [error] CreateFile() "./logs/nginx.pid" failed (2: The system cannot find the file specified)

折腾了半天,在一堆不靠谱的博文中间,终于从这里找到方法:
学习openresty时,nginx的一个坑

关键就是,使用全路径,在 cmd 中运行此命令:

Terminal window
D:\apps\nginx\nginx.exe -c "D:\apps\nginx\conf\nginx.conf"

-c 表示 configuration,指定配置文件。

其中 D:\apps\nginx\ 是我这里 nginx.exe 所在的目录。

参考文章

nginx日常维护常用命令 - 莫问今朝· - 博客园
学习openresty时,nginx的一个坑
我可以使用/ etc/hosts來映射主機名端口嗎? - 優文庫
nginx_反向代理实现使用域名访问本地项目_初学者乐园的博客-CSDN博客


原文链接: https://blog.jgrass.cc/posts/nginx-host-web-api-debug/

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。