Nginx反向代理

young 527 2021-10-18

概念

正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。(类似于访问谷歌,请求代理服务器,代理服务器请求谷歌,谷歌响应到代理服务器,代理服务器返回给浏览器)。客户是知道代理服务器和原始服务器的存在的

反向代理:位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获取目标服务器的资源。同时,客户不需要知道目标服务器的地址,也无需在客户端做任何设定。(类似于你捐东西给慈善基金会,慈善基金会捐给医院,慈善基金会相当于反向代理服务器,医院是客户端,医院并不知道给他的东西是从哪里来的,只知道慈善基金会)

语法

server{
	listen 80;
    server_name localhost;
    location / {
        proxy_pass http://192.168.12.1:8081;
    }
}

可以在nginx.conf中通过include 引入其他配置文件 如include extra/*.conf,表示引入nginx.conf所在目录下的extra目录中的所有.conf文件

修改请求方式

server{
	listen 80;
    server_name localhost;
    location / {
        proxy_pass http://192.168.12.1:8081;
        proxy_method POST;  
    }
}

获取真实IP

server{
	listen 80;
    server_name localhost;
    location / {
        proxy_pass http://192.168.12.1:8081;
        proxy_method POST;  
        # 获取请求的host
        proxy_set_header Host $host;
        # 获取客户端ip地址设置到header中
        proxy_set_header X-Real-IP $remote_addr;
        # 获取所有转发请求的ip信息列表
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
    }
}