Nginx负载均衡配置入门教程

发布时间:2019-08-25编辑:脚本学堂
有关nginx负载均衡配置的简单例子,学习下nginx负载均衡的配置方法,并就nginx做为反向代理负载均衡器时的一些问题做了解答,需要的朋友参考下。

nginx负载均衡配置入门教程

nginx负载均衡配置:
www.jb200.com 和 blog.jb200.com 域名均指向 Nginx 所在的服务器IP。
用户访问http://www.jb200.com,将其负载均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。
用户访问http://blog.jb200.com,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。

配置文件nginx.conf:
 

复制代码 代码示例:

user  www www;

worker_processes 10;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid   logs/nginx.pid;

#最大文件描述符
worker_rlimit_nofile 51200;

events
{
 use epoll;

 worker_connections 51200;
}

http
{
 include  conf/mime.types;
 default_type  application/octet-stream;

 keepalive_timeout 120;

 tcp_nodelay on;

 upstream  www.jb200.com  {
    server   192.168.1.2:80;
    server   192.168.1.3:80;
    server   192.168.1.4:80;
    server   192.168.1.5:80;
 }

 upstream  blog.jb200.com  {
    server   192.168.1.7:8080;
    server   192.168.1.7:8081;
    server   192.168.1.7:8082;
 }

 server
 {
    listen  80;
    server_name  www.jb200.com;

    location / {
        proxy_pass   http://www.jb200.com;
        proxy_set_header   Host   $host;
        proxy_set_header   X-Real-IP   $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    log_format  www_jbxue_com  '$remote_addr - $remote_user [$time_local] $request '
       '"$status" $body_bytes_sent "$http_referer" '
       '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /data1/logs/www.log  www_jbxue_com;
 }

 server
 {
    listen  80;
    server_name  blog.jb200.com;

    location / {
        proxy_pass   http://blog.jb200.com;
        proxy_set_header   Host   $host;
        proxy_set_header   X-Real-IP   $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    log_format  blog_jbxue_com  '$remote_addr - $remote_user [$time_local] $request '
       '"$status" $body_bytes_sent "$http_referer" '
       '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /data1/logs/blog.log  blog_jbxue_com;
 }
}

二、安装PHP 5.2.4(fastcgi模式)
4、创建www用户和组,以及其使用的目录:

三、安装Nginx 0.5.31
1、安装Nginx所需的pcre库:
2、安装Nginx
3、创建Nginx日志目录
4、启动Nginx

F5 有没有类似的负载均衡功能? 另外还有一个疑问:
客户端直接访问web服务器时,可以用HTTP_CLIENT_IP、REMOTE_ADDR 这几个变量看到客户端的IP
经过squid或者ngrnx之后,还能看到客户端的IP吗? 是不是要用HTTP_X_FORWARDED_FOR

F5 BIG-IP 就是用来做负载均衡的。
经过squid或者ngrnx之后,看到客户端的IP,请用HTTP_X_FORWARDED_FOR

几个问题
1、如果均衡的域名中有泛域名,或有几百个域名的话可以配置吗?
2、ngnix在做均衡的时候是否已经包含了cache功能?
3、ngnix---squid----apache取的的HTTP_X_FORWARDED_FOR是squid服务器的IP地址,如果想取真实客户端地址可以做到吗?

1、nginx.conf
 

server_name  .jb200.com;   即可支持***.jb200.com泛域名

2、nginx负载均衡只做反向代理,有简单的缓冲,但不像Squid那样将cache存在本机。

3、我已经在nginx.conf配置文件中增加:
 

proxy_set_header   Host   $host;
proxy_set_header   X-Real-IP   $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

编译squid时加上--enable-follow-x-forwarded-for
然后在squid.conf中输入一行:
 

follow_x_forwarded_for allow all

后端的Apache取日志(httpd.conf):
 

LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %h %T" combined
 

取到的就是用户真实IP地址。

更多有关nginx负载均衡的配置教程,请点这里继续阅读,以加深对这块内容的理解。