具有以下 nginx 配置:
server {
server_name home.example.com;
listen 80;
location /rocket/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://IP:3010/;
proxy_redirect off;
}
}
我正在端口 3010 上内部运行网络聊天,网址为home.example.com/rocket
第一个 GET 请求是可以的,因为它被很好地重定向,但是当 HTML 页面请求 CSS 和 JS 脚本时,它使用根服务器名称:
home.example.com/asdfsafdsf.css
没有/rocket
路径。
是否有重写规则或类似的东西返回第一个 HTML 告诉所有后续请求都必须添加路径/rocket
?
答案1
不要在 Nginx 中配置此项,请在应用程序服务器中配置此项。
这RocketChat 的反向代理文档对此有注释:
注意:您必须使用外部 https 地址作为上面 [[第 3 节 Deploy-Rocket.Chat-without-docker#3-download-rocketchat]] 中 ROOT_URL 的值。这包括 https:// 并且省略端口号。因此,不要使用根目录网址=http://本地主机:3000使用类似https://你的主机名.com
因此,编辑你的 RocketChat 配置并设置
ROOT_URL=http://home.example.com/rocket/
此后,无需再为此修改 Nginx 配置。