nginx 代理

正向代理与反向代理的区别就是代理的对象不一样,正向代理代理的对象是客户端,反向代理代理的对象是服务端。


1,正向代理

我们日常的科学上网就可以用Nginx做正向代理

如下,也是正向代理

server {
    location / {
        proxy_pass http://$http_host$request_uri;
    }
}


2,反向代理

配置语法:

Syntax:proxy_pass URL

Default:--

Context:location,if inlocation,limit_except

如下:

server {
    location ~ /test_index\.html$ {
        proxy_pass http://192.168.1.101:8081;
    }
}

注意:设置了代理,后端是获取不到头信息与用户真实ip的,这时需要nginx设置返回后端的头信息(proxy_set_header),通常配置如下:

server {
    location / {
        proxy_pass http://192.168.1.101:8081;
        proxy_redirect default;  

        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_connect_timeout 90;  
        proxy_send_timeout 90;  
        proxy_read_timeout 90;  

        proxy_buffer_size 32k;  
        proxy_buffering on;
        proxy_buffers 4 128k;  
        proxy_busy_buffers_size 256k;  
        proxy_max_temp_file_size 256k; 
    }
}

通常这些配置是可以公用的,所以vim proxy_params一个文件,用一个文件写入这些配置,然后修改location:

server {
    location / {
        proxy_pass http://192.168.1.101:8081;
        include proxy_params;
    }
}

或者

upstream testserver {
    server http://192.168.1.101:8081;
}
server {
    location / {
        proxy_pass http://testserver;
        include proxy_params;
    }
}


说明:

~ 波浪线表示执行一个正则匹配,区分大小写

* 表示取反

~* 表示执行一个正则匹配,不区分大小写

!~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配

^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录

= 进行普通字符精确匹配



参考:

https://www.jianshu.com/p/46bc0e0186d5

真诚赞赏,手留余香
赞赏
随机推荐
vue-cli使用
体块透视
一个页面中多个window.onload = function(){}冲突问题解决思路
微信接入验证与回复消息
node.js的module.export 和 export方法的区别
PHP OpenSSL扩展 - 对称加密
windows+Apache下安装SSL证书「多虚拟主机」
macOS中禁止Adobe CC的无用启动项
npm国内镜象设置的三种方法
织梦分页样式