文章目录

  • 一 准备工作:
  • 二 keepalived篇
  • 三 nginx篇
  • 四 开机启动
  • 五 其它操作
  • 六 nginx.service文件介绍
  • 七 nginx_check.sh内容
  • 八 default.conf内容
  • 九 nginx实现虚拟主机



为什么要使用nginx做代理服务器?


1 提高访问速度


2 防火墙作用


3 通过代理服务器访问不能访问的站点

一 准备工作:

相关文件下载:
链接:https://pan.baidu.com/s/1cbGgS-ZV5jEhDbiNFz5f7Q
提取码:90m4
文件说明:
nginx_check.sh:检查nginx集群下心跳文件,nginx异常关闭则启动,启动不成功则将其对应的keepalived关闭
nginx.service:配置nginx开机自启动文件
nginx-1.9.9.tar.gz:安装包
default.conf:nginx扩展文件,放在conf.d文件夹下

#安装jdk,tomcat,并启动tomcat

#开启vrrp协议:不开启keepalived会出现脑裂
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0  --protocol vrrp -j ACCEPT
#把yum包更新到最新  
 yum update
 #根目录下创建shell文件夹,放入下载的nginx_check.sh文件
 mkdir /shell
#在/etc/hosts文件最后加上配置信息,keepalived中的router_id 需要用到
vi /etc/hosts
127.0.0.1 KEEPALIVED_NGINX_BACKUP 或者 127.0.0.1 KEEPALIVED_NGINX_MASTER 或者127.0.0.1 其它

二 keepalived篇

#keepalived安装
 yum install keepalived
 #修改keepalived配置文件文件
 cd /etc/keepalived/
 vi keepalived.conf 
 #需要修改【router_id KEEPALIVED_NGINX_BACKUP(对应之前在/etc/hosts文件最后加上配置信息)】、注释掉【# vrrp_strict(留着会影响性能)】、【state BUCKUP(取个名)】、【interface ens33(ip addr查看当前网关,我这里是ens33)】、【priority 100 (优先级设置,我主的设置为100,从的设置50)】、【virtual_ipaddress (虚拟ip地址,配置好之后通过这个进入到nginx)】、【vrrp_script chk_http_port(nginx检测配置)】
 #修改文件内容如下:
 
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id KEEPALIVED_NGINX_BACKUP
   vrrp_skip_check_adv_addr
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BUCKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      192.168.2.102
    }
}

vrrp_script chk_http_port {

 script "/shell/nginx_check.sh" #脚本地址

 interval 2 #检测脚本执行的间隔秒

 weight 2 #比重
}

三 nginx篇

#GCC编译环境安装:Nginx使用C语言开发,在网上下载源码编译安装时需要gcc环境。

yum install gcc-c++

#PCRE和pcre-devel安装:PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库

yum install -y pcre pcre-devel

#zlib 安装 zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip压缩 。

yum install -y zlib zlib-devel

#OpenSSL安装:用于支持HTTPS协议。OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
yum install -y openssl openssl-devel

#解压Nginx包
tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure
#编译安装
make && make install   #安装配置好nginx服务器后默认目录是/usr/local/nginx/html
#创建配置文件
cd /usr/local/nginx/conf/
mkdir conf.d
#将default.conf引入到该文件夹下

#修改nginx配置文件
#需配置worker_processes,worker_connections,upstream 
 vi /usr/local/nginx/conf/nginx.conf
	#worker_processes 默认是1,根据CPU数量进行数量配置
	#events 配置工作模式和连接数
	#示例:
#events {
   # worker_connections  1024; #配置每个worker进程数连接上限
#}
 #在http模块下server前加入负载均衡的服务器,配置如下:www.coc.com为自己随意命名,这里使用的是权重来配置;还有ip_hash,通过客户端ip来划分;least_conn请求会被分发到连接数最少的服务器上;默认是轮询
	upstream www.coc.com{
		server 192.168.2.200:8080 weight=5;
		server 192.168.2.202:8080 weight=10;
	}
#http{}大括号内末尾加入
include /usr/local/nginx/conf/conf.d/*.conf;

#更改default.conf文件
vi conf.d/default.conf
#更改内容,将server_name和 proxy_pass 设置为  http://命名; 在nginx.conf中命的名;
	server {
    listen       80;
    server_name  www.coc.com;
    location / {
        proxy_pass   http://www.coc.com;:
        index  index.html index.htm;
    }
}

四 开机启动

一 设置Nginx开机启动:将nginx.service复制到/lib/systemd/system下

#启动nginx服务
systemctl start nginx.service
#nginx加入开机启动
systemctl enable nginx.service
#启动keepalived
systemctl start keepalived.service
#keepalived加入开机启动
systemctl enable keepalived.service

五 其它操作

5.1 nginx操作

#加入开机启动
systemctl enable nginx.service
#取消开机自启动
systemctl disable nginx.service
#启动nginx服务
systemctl start nginx.service
#停止nginx服务
systemctl stop nginx.service
#重启nginx服务
systemctl restart nginx.service
#查看所有以启动的服务
systemctl list-units --type=service
#查看服务当前状态
systemctl status nginx.service

5.2 keepalived操作

systemctl daemon-reload  #重新加载

systemctl enable keepalived.service  #设置开机自动启动

systemctl disable keepalived.service #取消开机自动启动

systemctl start keepalived.service #启动

systemctl stop keepalived.service #停止

5.3 nginx负载均衡策略:

ip_hash:
 upstream www.coc.com{
 ip_hash;
 server 192.168.2.201:8080 ;
 }
 least_conn(请求会被分发到连接数最少的服务器上)
 upstream www.coc.com{
 least_conn;
 server 192.168.2.201:8080 ;
 server 192.168.2.202:8080;
 }nginx备份:备份buckup配置,其他非backup机器挂掉后,才会请求buckup机器
 upstream www.coc.com{
 server 192.168.2.201:8080 ;
 server 192.168.2.202:8080 backup;
 }宕机down配置:配置down的服务器不参与负载均衡:
 stream www.coc.com{
 server 192.168.2.200:8080 ;
 server 192.168.2.202:8080 down;
 }

六 nginx.service文件介绍

[Unit]                                                      #服务说明

Description=nginx service                    #服务描述

After=network.target                            #服务类别描述

[Service]                                              #服务运行参数的设置

Type=forking                                       #以后台方式运行 

ExecStart=/usr/local/nginx/sbin/nginx         #启动命令,./usr/local/nginx/sbin/nginx 为nginx启动命令

ExecReload=/usr/local/nginx/sbin/nginx -s reload #重启命令,=后面为nginx重启命令

ExecStop=/usr/local/nginx/sbin/nginx -s quit        #退出命令,=后面为nginx退出命令

PrivateTmp=true                                                   #为服务分配独立的临时空间

[Install]                                                                  #运行级别下服务安装的相关设置

WantedBy=multi-user.target                                 #设置为多用户

七 nginx_check.sh内容

#!/bin/bash

echo 'xxxxxx'

count_nginx=`ps -ef|grep -w nginx|grep -v grep|wc -l`

echo $count_nginx

if [ $count_nginx -eq 0 ];then

    systemctl start nginx.service

    sleep 2

    if [ `ps -ef|grep -w nginx|grep -v grep|wc -l` -eq 0 ];then

        systemctl stop keepalived.service

    fi  

fi

八 default.conf内容

server {
    listen       80;
    listen  [::]:80;
    server_name  www.coc.com;

    location / {
        proxy_pass   http://www.coc.com;
        index  index.html index.htm;
    }
}

九 nginx实现虚拟主机

一个nginx可接收不同域名下的请求,并将其分派到不同的服务器,例如有两个网站:
#nginx.conf配置

upstream blob.coc.com{
	server 192.168.2.200:8080 ;
}
upstream www.coc.com{
	server 192.168.2.202:8080 ;
}
#default.conf文件配置
server {
    listen       80;
    server_name  blob.coc.com;
    location / {
        proxy_pass   http://blob.coc.com;
        index  index.html index.htm;
    }
}

server {
    listen       80;
    server_name  www.coc.com;
    location / {
        proxy_pass   http://www.coc.com;
        index  index.html index.htm;
    }
}