小小程序猿可笑可笑 2024-03-21 16:41 采纳率: 33.3%
浏览 15

Nginx监听80端口,转发ip:8069失败


server {
    listen       80;
    server_name  localhost;
    # 原来的配置,匹配根路径
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    }
    # 更该配置,匹配/路径,修改index.html的名字,用于区分该配置文件替换了容器中的配置文件
    location /api {
       proxy_pass http://ip:8069/;
    }
    location /change/ {
       proxy_pass http://ip:3040/;
    }
    location /gongcheng/ {
       proxy_pass http://ip:8080/;
    }
}

一下是转发失败信息

img


以上是Nginx的转发配置文件及转发失败的截图,希望各位解答一下

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-21 16:41
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:根据给出的Nginx配置文件,为什么转发失败? 回答: 根据给出的Nginx配置文件,可以看出主要做了以下配置:
    1. 对于根路径(/),Nginx会匹配到/usr/share/nginx/html目录下的index.html或index.htm文件,并且添加了跨域的Header。
    2. 对于路径/api,Nginx会将请求转发到http://ip:8069/。
    3. 对于路径/change/,Nginx会将请求转发到http://ip:3040/。
    4. 对于路径/gongcheng/,Nginx会将请求转发到http://ip:8080/。 根据给出的转发失败截图,可以看出请求是从localhost:80/api/user/list发出的,但转发到后端服务器时,URI变成了/apiuser/list,导致请求失败。 这是因为Nginx在转发请求时,默认会将$uri变量的值传递给后端服务器,而$uri变量的值是不包含查询参数的URI。因此,在这种情况下,Nginx会将路径和查询参数一起发送给后端服务器,从而导致URI出现问题。 将转发配置文件中的proxy_pass配置修改为以下方式即可解决问题:
    location /api {
        proxy_pass http://ip:8069/;
        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配置,我们可以将Host、X-Real-IP和X-Forwarded-For等信息添加到请求Header中,使得后端服务器能够正确解析请求。 案例: 以转发图片的接口为例,请求的URL为http://localhost:80/api/image?id=123,转发到后端服务器之后的URL应该为http://ip:8069/api/image?id=123。 修改转发配置文件如下:

    location /api {
        proxy_pass http://ip:8069/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

    通过以上修改,请求可以成功转发到后端服务器,也保留了查询参数和URI的完整性。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月21日

悬赏问题

  • ¥15 神经网络模型一直不能上GPU
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响