Hi琦森 2024-01-06 13:28 采纳率: 85.7%
浏览 13
已结题

nginx配置转发请求无效


        # 站点A nginx配置转发请求到另外一个站点https://b.cn/
        location /api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass https://b.cn/;
        }
  

             # 站点https://b.cn/配置 listen 80 default_server;时A站点转发请求正常,但是取消站点B的default_server后请求转发就不到站点https://b.cn/,而是到其他配置了default_server的站点


站点A和https://b.cn/和其他站点都在同一个服务器上部署,且都过nginx
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-06 16:02
    关注

    【以下回答由 GPT 生成】

    问题中提到,在nginx配置中将站点A的请求转发到站点B时,如果站点B配置了listen 80 default_server,则请求可以正常转发;但是当取消了站点B的default_server配置后,请求就无法到达站点B,而是到达其他配置了default_server的站点。这个问题可能是由于nginx在匹配请求时会按照一定的顺序进行匹配,当没有匹配到具体的location时,会将请求转发给default_server。通过以下方式可以解决这个问题:

    1. 确保站点A和站点B的配置文件都加载到了nginx中,可以通过include指令将站点的配置文件引入到主配置文件中。
    2. 确认nginx的配置文件中是否存在其他监听80端口的server块,并且这些server块的default_server配置是否位于站点B的前面,如果是的话,可以将这些server块的default_server配置移动到站点A的前面。
    3. 使用location /匹配所有请求,将请求转发到站点B。

    请注意,如果nginx中存在多个server块的监听端口配置为listen 80 default_server,则只有第一个server块会作为默认服务处理请求。

    下面是优化后的nginx配置示例:

    server {
        listen 80;
        server_name a.cn;
    
        location /api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass https://b.cn/;
        }
    
        # 将站点B的default_server配置移动到这里
    }
    
    server {
        listen 80 default_server;
        server_name b.cn;
    
        # 站点B的其他配置
    }
    
    # 其他server块的配置
    

    这样配置后,当请求转发无法到达站点B时,nginx会优先匹配到站点A的server块,并将请求转发到站点B。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月28日
  • 创建了问题 1月6日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)