前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx使用反向代理访问时改写请求

nginx使用反向代理访问时改写请求

作者头像
dogfei
发布2020-07-31 14:10:46
1.4K0
发布2020-07-31 14:10:46
举报
文章被收录于专栏:devops探索devops探索devops探索

问题

假如后端有一个系统访问方式是通过IP加端口的形式访问的,如:10.1.1.12:3000/hello,现在我们想把该资源放到公网上,通过域名的形式访问,在访问之前,需要使用nginx做一层反向代理,而做映射时只需把nginx代理服务器的80端口映射出去即可。

实现

upstream hello {
    server 10.1.1.12:3000 weight=2 max_fails=3 fail_timeout=100s;
}
server {
    listen 80;
    server_name hello.test.com;
    access_log /var/log/nginx/hello.log main;
    
  location /hello {
        proxy_pass http://hello;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }
}

这样是没有问题的,可以代理到后端真实的服务器,但是访问方式为:

<code>hello.test.com/hello</code>

需要在访问时添加请求的地址,比较麻烦,那么如何让Nginx自动添加地址呢?

这里使用rewrite来进行重写请求,示例如下:

upstream hello {
    server 10.1.1.12:3000 weight=2 max_fails=3 fail_timeout=100s;
}
server {
    listen 80;
    server_name hello.test.com;
    access_log /var/log/nginx/hello.log main;

    location =/ {
        rewrite / /hello;
    }

    location / {
        proxy_pass http://hello;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }
}

这样就可以啦

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档