1.什么是反向代理
首先反向代理是构建在服务端的,代理服务器将客户端请求转发给内部网络上的目标服务器;并将从目标服务器上得到的结果
返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
2.nginx反向代理
Nginx 作为 web 服务器一个重要的功能就是反向代理,反向代理的指令不需要新增额外的模块,
默认自带 proxy_pass 指令,只需要修改配置文件(nginx.conf)就可以实现反向代理
3.nginx反向代理应用场景
1.防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制
2.负载均衡,将用户请求分配给多个服务器
3.多业务系统下使用同一个ip或者域名进行访问时,以不同后缀进行区分,进行统一的访问入口
4.解决浏览器跨域问题
5.行为分析:构建反向代理、统一访问入口的场景,使用NGINX的日志及地理位置库插件来采集信息
4.常规反向代理配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
#这里是实现xxx.cn跳转到www.xxx.cn
server {
listen 80;
server_name xxx.cn;
return 301 http://www.xxx.cn$request_uri;
}
server {
listen 80;
server_name www.xxx.cn;
root /;
location / {
#在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,
#则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
#注意:这里的区别很重要(proxy_pass http://authsys; | proxy_pass http://authsys/;)
proxy_pass http://authsys/;
#Proxy Settings
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
client_max_body_size 50m;
}
}
upstream authsys{
server 192.168.1.106:8085;
}
}