nginx的反向代理
Posted cash_su
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的反向代理相关的知识,希望对你有一定的参考价值。
负载均衡集群的作用
分摊用户的访问请求及数据流。
保证也为的可用性7*24
应用于web业务及数据库从库的服务器的业务
负载均衡lvs叫负载均衡4层,nginx是反向代理,7层,
负载均衡的高可用
在主负载均衡前面加一个vip,当主的坏了,就会飘到从负载均衡,
负载均衡的概念,
lvs的初步原理(4层负载均衡器)工作在传输层。
用户过来先3次握手,但是lvs不建立连接,直接转发用户的请求,换个mac地址就好,没有做任何的处理,换mac头就是同网段的,换ip头就可以实现跨网段,lvs支持极大并发访问的负载需求,在30万并发没问题,效率源高于Nginx反向代理,lvs后边的的web节点必须一毛一样(4层负载的核心是转发)
Nginx的方向代理是7层的,用户tcp过来只直接跟反向代理握手,Nginx支持1.5到3万的并发,在7层。Nginx在代替用户发起请求向后边节点发起新的请求。(Nginx的核心是代理)
要实现反向代理的实验,最少要准备三台虚拟机,并且都安装了Nginx,Nginx的安装步骤,详见“nginx的编译,和简单的配置问题“
Nginx的反向代理配置文件
``` http { include mime.types; default_type application/octet-stream; sevfile on; keepalive_timeout 65; upstream default_server {(注释叫反向代理的服务器池。) server 192.168.200.69 weight=1;(weight是权重的意思,1;1叫轮询) server 192.168.200.70 weight=1; } server{ listen 80; server_name www.yunjisuan.com; location / { proxy_pass http://default_server; proxy_set_header host $host;(多虚拟域名分流代码) proxy_set_header x-forwarded-for $remote_addr;(让反向代理记录真实ip,将后边的记录的值赋值给前边的。) } } } #注释$remote_addr 记录的是反向代理的ip我们需要调试记录真实来源ip。
需要注意的是,在单域名的情况下,web服务器里的域名,和反向代理的域名要一样,如果是多域名就要添加相应的代码了。要在反向代理的配置文件的server里的location里添加
proxy_set_header host $host;(多虚拟域名分流代码)
要在各自的映射文件下添加映射
因为Nginx反向代理是代替发起全新的请求,所以web服务器记录的都是反向代理的ip地址,想要记录真实的ip需要在反向代理的的配置文件里server里的location里添加以下的代码
proxy_set_header x-forwarded-for $remote_addr;(让反向代理记录真实ip,将后边的记录的值赋值给前边的。)
还要在web服务器的配置文件里添加代码让日志格式化,添加以下代码
``` 写到web服务器的Nginx的配置文件里。在server之前写入,个日志格式化,显示真实的用户ip log_format main ‘"$http_x_formarded_for"$remote_addr-$remote_user[$time_local]"$request"‘ ‘$status $body_bytes_sent "$http_referer"‘ ‘"$http_user_agent"‘; 需要在location里开启日志记录access_log logs/access_bbs.log main;
```
配置文件详解 log_format --->记录字段顺序 $remote_addr --->来源IP $remote_user --->来源用户 [$time_local] --->来源时间 $request --->请求 $status --->状态码 $body_bytes_sent --->主体,发送的大小 $http_referer --->来源的浏览器 $http_user_agent --->用户的客户端 $http_x_forwarded_for --->这是反向代理时,节点服务器获取用户真实IP的必要功能配置
web服务器的配置文件事例,单域名
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.sunan.com; location / { root html/www; index index.html index.htm; } } }
以上是关于nginx的反向代理的主要内容,如果未能解决你的问题,请参考以下文章