假如后端有一个系统访问方式是通过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; } }
这样就可以啦
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句