📜  从 Internet 访问 localhost (1)

📅  最后修改于: 2023-12-03 15:21:52.791000             🧑  作者: Mango

从 Internet 访问 localhost

有时候,我们需要从公网访问我们本地开发的网站或应用程序,这时候就需要将 localhost(本地环回地址)暴露在 Internet 上。本篇文章将介绍如何通过工具和代码来实现这一目的。

工具
1. ngrok

ngrok 是一款允许将 localhost 端口映射到 Internet 上的工具,而且可跨平台使用。使用 ngrok 可以快速便捷地将本地网站或应用程序实时暴露出去。只需在命令行中输入以下代码就可以使用 ngrok:

./ngrok http 80

这个命令将公开你的 localhost:80,将 http 换成 https 即可支持 https。

2. Pagekite

Pagekite 是另一款工具,可将 localhost 服务器映射到 Internet 上,支持 Unix,Windows,OS X 等系统。与 ngrok 类似,只需在命令行中输入以下代码就可以使用 Pagekite:

pagekite.py your-name.pagekite.me localhost:8080

其中 your-name.pagekite.me 是你的自定义域名,我们需要通过申请自己的域名来使用 Pagekite。

代码
1. Node.js

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 端口。

2. Python

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。