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;
}
}
说明:
~ 波浪线表示执行一个正则匹配,区分大小写
* 表示取反
~* 表示执行一个正则匹配,不区分大小写
!~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配
^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= 进行普通字符精确匹配
网友评论