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的反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx反向代理实现负载均衡配置图解

Nginx反向代理websocket配置实例

Nginx websocket反向代理

三nginx的反向代理

nginx的反向代理和配置

Nginx专题:Nginx之反向代理及配置