关于#Nginx#的问题,如何解决?

Nginx代理 资源加载404,并且主页面hash值传递丢失。
背景
一个是内网系统A,经过里约网管映射出外网地址
另外一个是部署到互联网的系统B Nginx代理了A系统,和B系统同域

引用gpt回答 有帮助 采纳一下
根据描述的场景,内网系统A通过NAT网关映射到外网,外部系统B通过Nginx反向代理来访问内网系统A。要使得这种跨网络的反向代理配置成功,可以考虑以下几点:

  1. 内网系统A需要有一个固定的内网IP,并在NAT设备上配置端口映射,映射到一个外网公网IP。
  2. 在Nginx上配置这个外网IP为后端地址,配置反向代理的域名、路径等规则。
  3. Nginx服务器需要部署在公网,并解析到一个外网域名,与内网系统A映射的外网IP在同一公网。
  4. 在Nginx反代配置中,注明内网系统A的端口,location路径等代理规则。
  5. 打开Nginx服务器的防火墙对应端口,允许外部系统B的访问。
  6. 系统B在访问系统A时,通过域名访问Nginx公网IP,Nginx将请求反向代理到内网系统A。
    关键是内外网的网络需互通,内网系统要有固定外网IP映射,Nginx要部署在公网并配置好反向代理规则。同时防火墙也需要正确开放。这样跨网络的反向代理才能顺利进行。
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/754528
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
  • 除此之外, 这篇博客: nginx 负载均衡/一致性哈希中的 hash环的偏斜 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在介绍一致性哈希的概念时,我们理想化的将3台服务器均匀的映射到了hash环上,如下图所示:
    在这里插入图片描述
    在实际的映射中,服务器可能会被映射成如下模样:
    在这里插入图片描述
    聪明如你一定想到了,如果服务器被映射成上图中的模样,那么被缓存的对象很有可能大部分集中缓存在某一台服务器上,如下图所示:
    在这里插入图片描述
    上图中,1号、2号、3号、4号、6号图片均被缓存在了服务器A上,只有5号图片被缓存在了服务器B上,服务器C上甚至没有缓存任何图片,如果出现上图中的情况,A、B、C三台服务器并没有被合理的平均的充分利用,缓存分布的极度不均匀,而且,如果此时服务器A出现故障,那么失效缓存的数量也将达到最大值,在极端情况下,仍然有可能引起系统的崩溃,上图中的情况则被称之为hash环的偏斜,那么,我们应该怎样防止hash环的偏斜呢?一致性hash算法中使用”虚拟节点”解决了这个问题。

    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    针对你提到的问题,需要通过Nginx的配置来解决。下面是具体的解决方案:

    1. 404错误问题解决: 当在系统A通过Nginx代理加载资源时,出现404错误,可能是由于资源的路径不正确或者Nginx配置有误导致的。要解决这个问题,可以按照以下步骤进行检查和修复:
    2. 首先,确认资源文件在系统A中的路径是否正确,确保文件存在并且路径正确。
    3. 检查Nginx的配置文件,在配置文件中找到系统A的代理部分,比如上述示例的location /部分。
    4. 确保代理的路径和文件路径匹配,并且root路径配置正确。例如,如果资源文件的路径为/path/to/resource,同时Nginx的root路径配置为/path/to,则代理的路径应该配置为/resource
    5. 保存配置文件并重新加载Nginx配置:sudo nginx -s reload
    6. 这样就可以重新访问系统A并加载资源,应该不再出现404错误了。

    7. 主页面的hash值丢失问题解决: 当从系统A的主页面跳转到其他页面时,主页面的hash值丢失可能是因为Nginx没有正确地传递URL参数导致的。要解决这个问题,可以按照以下步骤进行修复:

    8. 在Nginx的配置文件中找到代理部分,比如上述示例的location /部分。
    9. 添加proxy_set_header指令来传递URL参数。例如,如果hash值是通过URL参数hash传递的,则可以添加以下指令: c location / { ... 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; proxy_set_header hash $arg_hash; // 传递hash值的参数名 }
    10. 保存配置文件并重新加载Nginx配置:sudo nginx -s reload
    11. 这样,在跳转到其他页面时,主页面的hash值应该能够正确传递并保留。

    以上是针对你提到的问题的解决方案,通过检查和修复Nginx的配置来解决404错误和传递主页面的hash值丢失问题。希望可以对你有所帮助,如果有其他问题,请随时提问。