Breakertt Blog

一起实现梦想的故事!

Baidupcs-web 在 apache2 上的反向代理配置

Breakertt's Avatar 2019-08-20 Linux

此处省略一万句脏话。

最近被安利了一个webui版本的baidupcs-go,叫做BiaduPCS-Web,据说不错我就也来用用。

安装很容易,使用了GitHub上的一键脚本:https://github.com/user1121114685/baidupcsweb

但是服务起来之后用的是5299端口,不太优雅对吧?那我就想着做个反代好了,也就是本文的重点了。

一开始我是想配一个类似于”http://server/pan/", 这样的子目录的反向代理的,但是这个软件不支持baseURL的配置以及路径都是写死的,那就只能单开一个域名给这个软件了。如果您使用的http服务器是nginx请看这里:请问如何用nginx进行反向代理,caddy我也不太清楚,反正这篇文章讲的只有apache的。

这个软件有部分链接用的不是http,而是websocket,这就是问题所在了,查了不少资料,我们需要先开启用几个插件:

a2enmod proxy
a2enmod proxy_http
a2enmod rewrite
sudo systemctl restart apache2

然后添加如下的新站点,只开了443的,80请自己改,内容如下:

<VirtualHost *:443>
ServerName pan.abc.com ######

SSLCertificateFile /etc/apache2/ssl/pan/cert.pem ######
SSLCertificateKeyFile /etc/apache2/ssl/pan/key.pem ######
SSLCertificateChainFile /etc/apache2/ssl/pan/chain.pem ######

SSLEngine on

ProxyPreserveHost On
ProxyRequests Off
RewriteEngine On

RewriteCond %{HTTP:Upgrade} = websocket [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule /ws(.*) ws://localhost:5299/ws$1 [P,L]
RequestHeader set X-Forwarded-Proto "https"

<Location /ws>
Require all granted
ProxyPassReverse ws://127.0.0.1:5299/ws
</Location>

<Location />
Require all granted
ProxyPass http://localhost:5299/
ProxyPassReverse /
</Location>

</VirtualHost>

简单讲一下,这边把当http请求需要升级为ws请求时,把反代的头改成了ws,然后就可以成功访问了。

本文最后更新于 天前,文中所描述的信息可能已发生改变