文章目录
前言
个人对于Nginx的学习记录,希望对有需要的朋友有所帮助,不喜勿喷。
一、基础环境
学习nginx,首先需要在Linux安装以下环境:
1.安装pcre
安装包地址:Index of /pub/pcre/
解压:tar -xvf pcre-8.00.tar.gz
安装:进入pcre目录,执行(要在管理员模式下)
./configure
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
make && make install
2.安装nginx
跟上面同样的步骤:解压、安装,不需要执行第二条命令了。
二、使用案例
1.启动
进入目录:
/usr/local/nginx/sbin
./nginx
localhost:80//首先要启动tomcat哈,然后去本地浏览器访问试试,开放80端口后才能在其他电脑访问。
关于防火墙开放端口的命令,请翻看我那篇Docker教程
2.常用命令
在/usr/local/nginx/sbin目录下:
./nginx -v//查看版本
./nginx -s stop //关闭
./nginx -s reload //重新加载配置文件
3.反向代理
打开浏览器,输入地址ip:6379,跳转到linux的tomcat主页
server_name 本地IP地址
listen 监听的端口
proxy_pass 跳转到的端口连接,这里是跳转到了本地的tomcat:8080端口
4.映射规则
5.负载均衡
1.轮询(默认)
请求按照时间顺序注意分配到不同的服务器,如果down掉,自动删除。
2.weight(权重)
3.ip_hash
根据ip的hash进行分配,能够解决session问题。
4.fair
按照响应时间分配
6.动静分离
403错误(无权限导致)
7.nginx集群
nginx+keepalive+虚拟ip
(1)安装keepalived
yum install keepalived -y
(2)查看安装结果
rpm -q -a keepalived
(3)修改配置文件(etc/keepalived/keepalived.conf)
主服务器
! 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 LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
}
track_script {
check_http_port
}
}
从服务器
! 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 LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.20
}
track_script {
check_http_port
}
}
编写脚本文件(/usr/local/src/nginx_check.sh)
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
启动
./nginx
systemctl start keepalived.service