Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
548 views
in Technique[技术] by (71.8m points)

能否只用webpack来实现把远程静态资源映射到本地资源

场景是这样的,我用webpack devServer来作测试,需要测试远程服务器上的文件

查了一下其他方法,用fiddler,chalres这种代理的,或者用chrome的插件来映射

不过总归都要增加步骤,能否直接在代码层面上搞定这个问题呢


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

在这个答案的评论区题主重新描述了需求, 因此实际上整个问题所描述的有误. 因此编辑答案:

如果你期望把本地的某个服务临时暴露给远端的服务器, 一个简单的方案, 可以考虑用 ssh 的隧道.

$ ssh -R 0.0.0.0:8080:127.0.0.1:1234 user@hostname

以上命令建立了一个隧道, 使得本地的1234端口(127.0.0.1:1234)暴露于那台机器的外网8080端口(0.0.0.0:8080)

需要注意的是, 你远端的 sshd_config 必须打开这些选项:

AllowAgentForwarding yes # 一般来说默认打开
AllowTcpForwarding yes # 默认打开
GatewayPorts clientspecified # 如果不如此配置, 只能映射到远端的127.0.0.1

IBM 的这篇文档很好的详细讲了这个东西:
https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html

在 ssh 暴露完成之后, 如果没有其它静态文件的内容, 可以直接访问远端的8080相当于访问本地的1234

如果有其它静态的内容或者配置, 那需要远端配置一下web服务器做下反代.


以下是原答案

你远程如果也是 http(s) server 的话, 直接用 webpack devserver 的 proxy 不就可以了

最简单的例子:

module.exports = {
    //...
    devServer: {
        proxy: {
            '/api': 'http://target_server'
        }
    }
};

支持多个代理的目标, 配置选项有不少, 对 url 进行 rewrite 也是可行的, 可以参见:

https://webpack.docschina.org/configuration/dev-server/#devserverproxy


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...