目前使用的是IP:端口的方式,但这样很不优雅,安全性也比较可疑。我看koishi提供了反代,但是只能代理到根目录下(比如 example.com
),而无法代理到子目录。(比如 example.com/koishi
)。我只有一个域名,而根目录已经分配了一个网站,所以教程里的方法无法使用。
经过个人初步排查,这是因为html中所有的src都取的是根目录下的路径,(比如 /index.html),这会导致即使我访问了 example.com/koishi
,它还是试图获取 example.com/index.html
,而不是 example.com/koishi/index.html
。我试图魔改了一下nginx配置(如下的sub_filter),没有生效。
location /koishi {
auth_basic "Please input password.";
auth_basic_user_file /etc/nginx/passwd;
proxy_pass http://127.0.0.1:5140/;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
sub_filter 'src="/' 'src="/koishi/';
sub_filter 'href="/' 'href="/koishi/';
sub_filter 'action="/' 'action="/koishi/';
sub_filter 'link rel="stylesheet" href="/' 'link rel="stylesheet" href="/koishi/';
}