如何在不显式输入端口号的情况下请求特定端口的网络资源
1. 使用代理
https://locals.wapa.taobao.com https://locals.wapa.taobao.com:3333
如上配置,将https://locals.wapa.taobao.com请求转发至https://locals.wapa.taobao.com:3333
注:此时80和3333端口都能访问到对应资源。
2. 使用 Nginx 或 Apache 等反向代理服务器
- 安装Nginx
brew install nginx
- 启动Nginx:
sudo nginx
sudo nginx -s stop //停止Nginx
- 配置Nginx
- 编辑 Nginx 配置文件:
sudo nano /opt/homebrew/etc/nginx/nginx.conf
- 添加以下配置,将流量从80端口转发到3333端口:
http {
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:3333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
- 重启Nginx:
sudo nginx -s reload
注:此时80和3333端口都能访问到对应资源。
3. 使用端口转发
- 编辑pf配置文件:
sudo nano /etc/pf.conf
- 添加端口转发规则:
在pf.conf文件中,找到或添加rdr-anchor "com.apple/*"这行,在它的下方添加端口转发规则。如添加:
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 3333
- 重新加载pf配置:
sudo pfctl -f /etc/pf.conf
- 启用pf服务:
sudo pfctl -e
sudo pfctl -d //禁用pf服务
注:由于返回数据时,pf会进行逆向处理,进行转发。此时80端口可以访问到对应资源,原本的3333端口失效。
4. 处理https请求
- 生成一个私钥文件 (private key):
openssl genrsa -out server.key 2048
- 使用生成的私钥创建一个证书签名请求 (CSR):
openssl req -new -key server.key -out server.csr
- 使用 CSR 和私钥生成一个自签名的证书(CRT):
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 配置nginx.conf文件,将流量从443端口转发到3333端口:
http {
server {
listen 443 ssl;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
location / {
proxy_pass http://127.0.0.1:3333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
- 重启Nginx:
sudo nginx -s reload

浙公网安备 33010602011771号