# ktx
**Repository Path**: ktcto/ktx
## Basic Information
- **Project Name**: ktx
- **Description**: ktx本机代理:用于绑定虚拟域名到本机其它项目任意端口,方便开发调试
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-09-30
- **Last Updated**: 2023-10-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 开源ktx本机代理
## 使用场景
This project uses Microsoft open-source reverse-proxy YARP to bind virtual domain names
to any localhost:port for testing and debugging local projects.
用于绑定虚拟域名到本机localhost端口号,方便开发调试本机各项目
(支持各种编程语言C# Java Go……各种开发工具VS VSCode IDEA)
## 使用步骤
1、本机 C:\Windows\System32\drivers\etc 目录(MacOS在 /etc/hosts )用记事本打开hosts文件,绑定虚拟域名:
```
127.0.0.1 k1demo.tf
127.0.0.1 k2demo.tf
```
2、cmd或Mac终端运行 dotnet --info 查看是否安装 [.NET 7.0](https://dot.net) ,
如果提示dotnet不存在,请先安装 [.NET 7.0](https://dot.net)
3、下载 [ktx.zip](https://gitcode.net/ktcto/ktx/-/raw/master/zip/ktx.zip)
解压后,点击 ktx_start.bat 运行本项目(Mac终端运行 sudo dotnet ktx.dll),
如果80端口已被占用,报错信息:
```
dotnet ktx.dll
Unhandled exception. System.Net.Sockets.SocketException (10013): 以一种访问权限不允许的方式做了一个访问套接字的尝试。
```
在任务管理器的服务列表中 右键停止 W3SVC服务 (IIS网站服务),运行本项目,看到以下信息表示运行成功:
```
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://[::]:80
```
4、如果运行失败,管理员权限运行cmd命令查看本机80、443端口被哪个进程占用,关闭对应进程
```
netstat -ano | findstr 0.0.0.0:80
netstat -ano | findstr 0.0.0.0:443
TASKKILL /F /IM "dotnet.exe" /T
TASKKILL /F /PID 进程Id /T
```
MacOS 终端查看本机80、443端口被哪个进程占用,关闭对应进程
```
sudo lsof -i :80
sudo lsof -i :443
sudo kill -9 进程Id
```
5、成功运行本项目后,浏览器访问 http://k1demo.tf 和 http://k2demo.tf 可以看到本机代理到不同的网站
6、修改配置文件 appsettings.json 指向本机其它项目localhost:端口,
可增加自定义虚拟域名(同时修改hosts文件),重新运行本项目,就可以用虚拟域名开发调试本机各项目了
## 技术原理
1、ktx 基于微软开源YARP反向代理组件,监听80、443端口,配置虚拟域名反向代理到本机其它项目的端口号
https://github.com/microsoft/reverse-proxy
https://microsoft.github.io/reverse-proxy/articles/config-files.html
## KT开源社区 [ktcto.com](https://ktcto.com)
1、ktx本机代理:绑定虚拟域名用于开发调试
https://dev.azure.com/ktcto/ktx
https://gitcode.net/ktcto/ktx
https://gitee.com/ktcto/ktx
https://github.com/ktcto/ktx
## 开源协议
KT开源社区 [ktcto.com](https://ktcto.com) 使用[MIT开源协议](https://opensource.org/license/mit)
## 免责声明
用户使用本站资源所产生的一切问题或违法行为,KT开源社区 不承担 任何责任