我在端口 9000 上运行 IRC 客户端(“The Lounge”)。现在我想通过创建该端口的 NGINX 反向代理并使用 SSL 保护它,使其可以从 Web 访问。我需要重写 css、javascript 等的 URL,以便在其他位置查找它们。
当页面到达浏览器时,其源代码如下所示:
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/style.css">
<link id="theme" rel="stylesheet" href="themes/example.css">
<style id="user-specified-css"></style>
<link rel="shortcut icon" href="img/favicon.png" data-other="img/favicon-notification.png" data-toggled="false" id="favicon">
<link rel="apple-touch-icon" sizes="120x120" href="img/apple-touch-icon-120x120.png">
<link rel="manifest" href="manifest.json">
我需要重写指向“irc/LINKNAME”的所有链接。示例:
"css/bootstrap.css" -> "irc/css/bootstrap.css"
"manifest.json" -> "irc/manifest.json"
我知道 sub_filter 是可行的方法,但是我如何匹配所有链接并让其在前面加上“irc/”作为前缀?
sub_filter "(.?)" "irc/";
sub_filter_once off;
当然,我可以为每个目录和文件创建一个 sub_filter,但这可能是错误的做法。
答案1
如果您没有很多位置,您可以这样配置。
location / {
sub_filter '<a href="http://$host/' '<a href="https://$host/irc/';
sub_filter_once on;
proxy_pass http://127.0.0.1:9000;
}
如果不是您的情况,请分享您的nginx
配置。