文章目录
- 一 准备工作:
- 二 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;
}
}