104 lines
2.7 KiB
Markdown
104 lines
2.7 KiB
Markdown
# 内网代理方案使用说明
|
||
|
||
## 问题描述
|
||
- **A设备(当前设备)**:可以监听端口,但无法访问内网网站
|
||
- **B设备(局域网设备)**:可以访问内网网站,但无法监听端口
|
||
|
||
## 解决方案
|
||
通过反向代理方式实现访问:
|
||
1. **A设备**:运行代理服务器,监听端口接收用户请求和B设备连接
|
||
2. **B设备**:主动连接到A设备,负责转发请求到内网网站
|
||
|
||
## 文件结构
|
||
```
|
||
proxy/
|
||
├── proxy_server.py # 运行在A设备上
|
||
├── proxy_client.py # 运行在B设备上
|
||
└── README.md # 使用说明
|
||
```
|
||
|
||
## 使用步骤
|
||
|
||
### 第一步:在A设备(当前设备)上启动代理服务器
|
||
|
||
```bash
|
||
python proxy_server.py
|
||
```
|
||
|
||
输出示例:
|
||
```
|
||
A设备代理服务器已启动,监听端口 8080
|
||
等待B设备连接和用户请求...
|
||
```
|
||
|
||
记录A设备的IP地址(假设为 `192.168.1.50`)
|
||
|
||
### 第二步:在B设备上运行客户端程序
|
||
|
||
```bash
|
||
python proxy_client.py 192.168.1.50 8080
|
||
```
|
||
|
||
输出示例:
|
||
```
|
||
成功连接到A设备: 192.168.1.50:8080
|
||
准备转发请求到: superstar.geelytravel.com:443
|
||
```
|
||
|
||
### 第三步:在A设备上访问内网网站
|
||
|
||
**方式一:设置浏览器代理**
|
||
1. 打开浏览器设置
|
||
2. 设置HTTP/HTTPS代理为:`localhost:8080`
|
||
3. 访问:`https://superstar.geelytravel.com`
|
||
|
||
**方式二:使用curl测试**
|
||
```bash
|
||
curl -x http://localhost:8080 https://superstar.geelytravel.com
|
||
```
|
||
|
||
## 工作原理
|
||
```
|
||
用户浏览器 → A设备(监听端口8080) → B设备 → 内网网站
|
||
↑ |
|
||
└────────────────────┘
|
||
响应返回路径
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### A设备(proxy_server.py)
|
||
```python
|
||
TARGET_HOST = 'superstar.geelytravel.com' # 目标内网网站
|
||
TARGET_PORT = 443 # HTTPS端口
|
||
LISTEN_PORT = 8080 # A设备监听端口
|
||
```
|
||
|
||
### B设备(proxy_client.py)
|
||
```python
|
||
TARGET_HOST = 'superstar.geelytravel.com' # 目标内网网站
|
||
TARGET_PORT = 443 # HTTPS端口
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. 确保两台设备在同一局域网内
|
||
2. A设备的防火墙需要允许端口 `8080` 的入站连接
|
||
3. B设备需要能正常访问目标内网网站
|
||
4. 启动顺序:先启动A设备的服务器,再启动B设备的客户端
|
||
|
||
## 故障排除
|
||
|
||
**B设备无法连接到A设备:**
|
||
- 检查A设备的IP地址是否正确
|
||
- 检查A设备的防火墙设置
|
||
- 确保A设备的代理服务器已启动
|
||
|
||
**网站无法访问:**
|
||
- 检查B设备是否能直接访问目标网站
|
||
- 检查网络连接是否正常
|
||
|
||
**连接不稳定:**
|
||
- 检查网络稳定性
|
||
- 考虑增加超时重试机制
|