哎,还得是chatgpt,难道就没有人有这种使用场景吗?没查到一个配置是有效的。
-  我: 我配置了nginx反向代理,用域名http://xx.com/aaa/代理一个网页http://ff.com, 
 但是请求资源时发生404,如何解决,我能够正确获取到dom
-  gpt-4-1106-preview: 如果你已经成功配置了 Nginx 以使用 http://xx.com/aaa/ 代理到 http://ff.com,但在访问资源时遇到了 404 错误,可能的原因之一是资源的相对路径问题。当你使用子路径代理到另一个网站时,目标网站页面中的资源可能会因为路径不匹配而加载失败。 例如,如果目标网站(http://ff.com)中有一张图片,其路径为 /images/pic.jpg,则该请求将在代理服务器上转换为 http://xx.com/aaa/images/pic.jpg。但是,如果 Nginx 配置中没有正确地重写资源的路径,资源请求会被发向错误的 URL,导致 404 错误。 为了解决这个问题,你需要确保 Nginx 的配置能够正确处理路径重写。下面是一个基本的例子,展示如何为 Nginx 设置代理并重写 URL 路径: server {listen 80;server_name xx.com;location /aaa/ {proxy_pass http://ff.com/; # 确保末尾有斜杠proxy_set_header Host $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-Proto $scheme;# 重写路径:移除 `aaa`rewrite ^/aaa/(.*) /$1 break;# 如果需要,处理 HTML 内嵌资源的路径问题sub_filter 'src="/' 'src="/aaa/';sub_filter 'href="/' 'href="/aaa/';sub_filter_once off;}}在这个配置中,rewrite 指令用于从传入的请求 URL 中删除 /aaa/ 子路径,保持后端请求的正确性。sub_filter 指令用于处理返回的 HTML 内容,将资源的路径前缀修改为 /aaa/,使它们在反向代理环境中有效。请注意,这可能需要 Nginx 的 ngx_http_sub_module 模块支持。 确保重写规则和替换操作符合你的实际需求,它们可能需要根据实际网站的结构进行调整。 最后,不要忘记重新加载或重新启动 Nginx 以应用更新后的配置: sudo nginx -s reload # 或者 sudo systemctl reload nginx一定要仔细检查网站的 HTML 和相关资源请求,确保所有的资源路径都能正确反映反向代理的结构。 剩余的问题-  对于*.svg文件请求依然是404,不看图又不会死,直接不解决。 
-  对于api请求是404,哎懒得折腾了,直接把api请求单独重定向到一个同名路由成功访问,出现冲突了再说吧。 
 像这样:location /api/ {proxy_pass http://127.0.0.1:8085/api/;}
 
-