📅  最后修改于: 2023-12-03 15:21:52.791000             🧑  作者: Mango
有时候,我们需要从公网访问我们本地开发的网站或应用程序,这时候就需要将 localhost(本地环回地址)暴露在 Internet 上。本篇文章将介绍如何通过工具和代码来实现这一目的。
ngrok 是一款允许将 localhost 端口映射到 Internet 上的工具,而且可跨平台使用。使用 ngrok 可以快速便捷地将本地网站或应用程序实时暴露出去。只需在命令行中输入以下代码就可以使用 ngrok:
./ngrok http 80
这个命令将公开你的 localhost:80,将 http 换成 https 即可支持 https。
Pagekite 是另一款工具,可将 localhost 服务器映射到 Internet 上,支持 Unix,Windows,OS X 等系统。与 ngrok 类似,只需在命令行中输入以下代码就可以使用 Pagekite:
pagekite.py your-name.pagekite.me localhost:8080
其中 your-name.pagekite.me 是你的自定义域名,我们需要通过申请自己的域名来使用 Pagekite。
Node.js 提供了 http-proxy 模块,其中包含一个 createProxyServer() 函数,可以将请求转发到本地的另一个端口或主机。下面是一个简单的例子:
const http = require('http');
const httpProxy = require('http-proxy');
const targetPort = 3000; // 目标端口
const targetHost = 'localhost'; // 目标主机
const proxy = httpProxy.createProxyServer(); // 创建代理服务器
const server = http.createServer((req, res) => {
console.log('proxy request', req.url);
// 转发请求
proxy.web(req, res, {
target: targetHost + ':' + targetPort,
});
});
server.listen(80);
上面的代码将本地的端口 3000 映射到了公网 IP 上的 80 端口。
Python 中有一个叫做 Flask 的库,它提供了一个简单的 web 框架,使我们可以很容易地在本地开发网站或应用。为了将这个应用程序暴露在 Internet 上,我们需要使用 Flask 的 run() 函数。下面是一个例子:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return jsonify({'result': 'success'})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
上面的代码将应用程序运行在 0.0.0.0:5000 上,这意味着可以通过任意 IP 地址访问该应用程序。我们可以在公网上使用 port forwarding 或 ngrok 等工具将访问地址映射到我们的 localhost。