nginx 反向代理
一、什么是方向代理
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,"它代理的是服务端,代服务端接收请求",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
二、反向代理配置
server { listen 80; server_name aotu.jd.com; root /var/www/; location /o2blog_wx/ { # 反向代理我们通过proxy_pass字段来设置 # 也就是当访问http://aotu.jd.com/o2blog_wx的时候经过Nginx反向代理到服务器上的http://127.0.0.1:3000 # 同时由于解析到服务器上的时候o2blog_wx这个字段都要处理 # 所以通过rewrite字段来进行正则匹配替换 # 也就是http://aotu.jd.com/o2blog_wx/hello经过Nginx解析到服务器变成http://127.0.0.1:3000/hello proxy_pass http://127.0.0.1:3000; rewrite ^/o2blog_wx/(.*) /$1 break; } }
三、负载均衡
http { upstream backend { server 127.0.0.1:3000; server 127.0.0.1:3001; } ... server { listen 9000; server_name localhost; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass backend; } } }