Nginx负载均衡服务器配置


CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 1 页 共 8 页 NginxNginxNginxNginx 负载均衡服务器配置负载均衡服务器配置负载均衡服务器配置负载均衡服务器配置 说明说明说明说明:::: NginxNginxNginxNginx 负载均衡服务器负载均衡服务器负载均衡服务器负载均衡服务器:::: 系统:CentOS 5.5 IP:192.168.21.164 WebWebWebWeb 服务器列表服务器列表服务器列表服务器列表:::: Web1:192.168.21.160 Web2:192.168.21.169 实现目的实现目的实现目的实现目的:::: 用户访问 192.168.21.164 服务器时,通过 Nginx 负载均衡到 Web1 和 Web2 服务 器 下面配置下面配置下面配置下面配置 NginxNginxNginxNginx 负载均衡服务器负载均衡服务器负载均衡服务器负载均衡服务器 准备篇准备篇准备篇准备篇:::: 一、配置好 IP、DNS 、网关,确保使用远程连接工具能够连接服务器 二、配置防火墙,开启 80 端口 系统运维 www.osyunwei.com 温馨提醒:qihang01 原创内容©版权所有,转载请 注明出处及原文链接 vi /etc/sysconfig/iptables #编辑防火墙配置文件,添加以下内容 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启 动失败,正确的应该是添加到默认的 22 端口这条规则的下面 添加好之后防火墙规则如下所示: ##################################################################### # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 2 页 共 8 页 :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT ##################################################################### /etc/init.d/iptables restart #最后重启防火墙使配置生效 三、关闭 SELINUX vi /etc/selinux/config #编辑配置文件 #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq #保存 shutdown -r now #重启系统 四 、系统约定 软件源代码包存放位置:/usr/local/src 源码包编译安装位置:/usr/local/软件名字 五、下载软件包 1、下载 nginx(目前稳定版) http://nginx.org/download/nginx-1.0.15.tar.gz 2、下载 pcre (支持 nginx 伪静态) ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.g z 3、下载 ngx_cache_purge(清除指定 URL 缓存,方便以后扩展配置 nginx 缓存 服务器) http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz 六、安装编译工具及库文件(使用 CentOS yum 命令安装,安装的包比较多,方 便以后配置 lnmp 环境) CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 3 页 共 8 页 yum install make apr* autoconf automake curl curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* cpp glibc libgomp libstdc++-devel keyutils-libs-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch 安装篇安装篇安装篇安装篇 以下是用 putty 工具远程登录到服务器,在命令行下面操作的 安装 nginx groupadd www #添加 www 组 useradd -g www www -s /bin/false #创建 nginx 运行账户 www 并加入到 www 组,不允许 www 用户直接登录系统 cd /usr/local/src #进入安装目录 tar zxvf ngx_cache_purge-1.5.tar.gz #解压 tar zxvf nginx-1.0.15.tar.gz #解压 cd nginx-1.0.15 ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.30 --add-module=../ngx_cache_purg e-1.5 #配置 注意:--with-pcre=/usr/local/src/pcre-8.30 指向的是源码包解压的路径,而 不是安装的路径,否则会报错 make #编译 make install #安装 /usr/local/nginx/sbin/nginx #启动 Nginx ======================================================= 设置 nginx 开启启动 vi /etc/rc.d/init.d/nginx #编辑启动文件添加下面内容 #!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features, but it ' s not for everyone. # processname: nginx # pidfile: /var/run/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/usr/local/nginx/logs/nginx.pid RETV AL=0 prog= " nginx " CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 4 页 共 8 页 # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${ NETWORKING} = " no " ] && exit 0 [ -x $ nginxd ] || exit 0 # Start nginx daemons functions. start () { if [ -e $ nginx_pid ] ; then echo " nginx already running.... " exit 1 fi echo -n $" Starting $ prog: " daemon $ nginxd -c ${ nginx_config } RET V AL= $? echo [ $ RETV AL = 0 ] && touch /var/lock/subsys/nginx return $ RETV AL } # Stop nginx daemons functions. stop () { echo -n $" Stopping $ prog: " killproc $ nginxd RET V AL= $? echo [ $ RETV AL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid } reload () { echo -n $" Reloading $ prog: " #kill -HUP ` cat ${ nginx_pid }` killproc $ nginxd -HUP RET V AL= $? echo } # See how we were called. case "$ 1 " in start ) start ;; stop ) stop ;; CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 5 页 共 8 页 reload ) reload ;; restart ) stop start ;; status ) status $ prog RET V AL= $? ;; *) echo $" Usage: $ prog { start | stop | restart | reload | status | help }" exit 1 esac exit $ RETV AL ======================================================= :wq ! #保存 退 出 chmod 77 5 /etc/rc.d/init.d/nginx # 赋予 文件 执 行权 限 chkconfig nginx on #设置开 机 启动 /etc/rc.d/init.d/nginx restart #重启 Nginx ======================================================= 配置篇配置篇配置篇配置篇 配置 Nginx cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.confba k #备份 nginx 配置文件 (一)、设置 nginx 运行账 号 vi /usr/local/nginx/conf/nginx.conf #编辑 找 到 user nobody ;修改为 user www www ; #在 第 一行 (二)、 禁止 nginx 空主机头 vi /usr/local/nginx/conf/nginx.conf #编辑 找 到 server,在 上 面一行添加如下内容: ############################## server { listen 80 default ; server_name _ ; location / { CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 6 页 共 8 页 root html ; return 404 ; } location ~ /.ht { deny all ; } } ############################## /etc/rc.d/init.d/nginx restart #重启 nginx 这 样 设置之后,空主机头 访问会直接 跳 转到 nginx404 错 误页 面 。 (三)、添加 nginx 虚拟主机 包 含 文件 cd /usr/local/nginx/conf/ #进入 nginx 安装目录 mkdir vhost #建 立虚拟 目录 vi /usr/local/nginx/conf/nginx.conf #编辑 找 到 上 一 步 添加的代码,在最后添加如下内容: include vhost/*.conf ; 例 如: ############################## server { listen 80 default ; server_name _ ; location / { root html ; return 404 ; } location ~ /.ht { deny all ; } } include vhost/*.conf ; ############################## (四)、添加 Web 服务器 列表 文件 cd /usr/local/nginx/conf/ #进入目录 touch mysvrhost.conf #建 立 文件 vi /usr/local/nginx/conf/nginx.conf #编辑 找 到 上 一 步 添加的代码,在下面添加一行 include mysvrhost.conf ; 系统运维 www.osyunwei.com 温馨提醒:qihang01 原创内容©版权所有,转载请 注明出处及原文链接 (五)、设置 nginx 全局参数 vi /usr/local/nginx/conf/nginx.conf #编 CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 7 页 共 8 页 辑 worker_processes 2 ; # 工作进程 数 ,为 CPU 的 核心数或者 两 倍 events { use epoll ; #增加 worker_connections 65535 ; # 修改为 65535,最 大 连接 数。 } #############以下代码在 http { 部分 增加 与修改 ############## server_names_hash_bucket_size 128 ; #增加 client_header_buffer_size 32k ; #增加 large_client_header_buffers 4 32k ; #增加 client_max_body_size 300m ; #增加 tcp_nopush on ; #修改为 on keepalive_timeout 60 ; #修改为 60 tcp_nodelay on ; #增加 server_tokens off ; #增加,不 显 示 nginx 版 本信息 gzip on ; #修改为 on gzip_min_length 1k ; #增加 gzip_buffers 4 16k ; #增加 gzip_http_version 1.1 ; #增加 gzip_comp_level 2 ; #增加 gzip_types text/plain application/x-javascript text/css application/xml ; #增加 gzip_vary on ; #增加 (六)、设置 Web 服务器 列表 cd /usr/local/nginx/conf/ #进入目录 vi mysvrhost.conf #编辑,添加以下代码 upstream osyunweihost { server 192.168.21.160:80 weight=1 max_fails=2 fail_timeout=30s ; server 192.168.21.169:80 weight=1 max_fails=2 fail_timeout=30s ; ip_hash ; } (七)、 新 建 虚拟主机 配置文件 cd /usr/local/nginx/conf/vhost #进入 虚拟主机 目录 touch osyunwei.conf #建 立虚拟主机 配置文件 vi osyunwei.conf #编辑 server { listen 80 ; server_name www.osyunwei.com bbs.osyunwei.com sns.osyunwei.com ; location / { proxy_next_upstream http_502 http_504 error timeout invalid_header ; CentOS/RHEL 服务器系列教程 www.osyunwei.com 技术交流技术交流技术交流技术交流 QQ 群群群群::::203744115 第 8 页 共 8 页 proxy_pass http://osyunweihost ; #proxy_redirect off ; proxy_set_header Host $ host ; proxy_set_header X-Forwarded-For $ remote_addr ; } log_format access '$ remote_addr - $ remote_user [ $ time_local] $ request ' '"$ status " $ body_bytes_sent "$ http_referer " ' '"$ http_user_agent " "$ http_x_forwarded_for "'; access_log /usr/local/nginx/logs/access.log access ; location /NginxStatus { stub_status on ; access_log on ; auth_basic " NginxStatus "; #auth_basic_user_file pwd ; } } :wq ! #保存配置 sevice nginx restart #重启 nginx 测试篇测试篇测试篇测试篇 域 名: www.osyunwei.com bbs.osyunwei.com sns.osyunwei.com 分 别解 析 到 192.168.21.164 客 户访问这三 个站点 的时 候 ,Nginx 根据客 户访问的 ip_hash 值,负载均衡到 Web1 和 Web2 服务器 上 至此至此至此至此,,,,NginxNginxNginxNginx 负载均衡服务器配置负载均衡服务器配置负载均衡服务器配置负载均衡服务器配置完成完成完成完成 系统运维系统运维系统运维系统运维 www.osyunwei.comwww.osyunwei.comwww.osyunwei.comwww.osyunwei.com 温馨提醒温馨提醒温馨提醒温馨提醒::::qihang01qihang01qihang01qihang01 原创内容原创内容原创内容原创内容©©©©版权所有版权所有版权所有版权所有,,,,转载请转载请转载请转载请 注明出处及原文链接注明出处及原文链接注明出处及原文链接注明出处及原文链接
还剩7页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

ka520

贡献于2015-11-10

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf