安装nginx

#安装编译工具
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
#安装PCRE
# http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
#或者
cd /usr/local/src/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install
pcre-config --version
#安装nginx
#https://nginx.org/en/download.html
#或者
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar zxvf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make
make install
/usr/local/webserver/nginx/sbin/nginx -v
#安装成功后,nginx文件夹/usr/local/nginx

常用命令

#使用nginx命令必须提前进入nginx目录中/usr/local/nginx/sbin
cd /usr/local/nginx/sbin
#启用nginx
./nginx
#关闭nginx
./nginx -s stop
#重新加载nginx
./nginx -s reload

配置文件

#文件位置/usr/local/nginx/conf/nginx.conf

全局块

 #处理并发数量
worker_processes 1;

events块

#支持最大连接数
worker_connections 1024;

http块

  • http全局块
  • http server块

反向代理

server{
listen 端口号;
server_name ip地址;
location 请求表达式(正则表达式){
proxy_pass 跳转ip:端口号;
}
location 请求表达式(正则表达式){
proxy_pass 跳转ip:端口号;
}
多个location
}

负载均衡

轮询

upstream 负载均衡服务名称{
server ip:port [weight=权重系数];
server ip:port [weight=权重系数];
}
server{
listen port;
server_name ip;
local 表达式{
proxy_pass http://负载均衡服务名称
}
}

权重

upstream 负载均衡服务名称{
server ip:port [weight=权重系数];
server ip:port [weight=权重系数];
}
server{
listen port;
server_name ip;
local 表达式{
proxy_pass http://负载均衡服务名称
}
}

ip_hash,每个ip只访问一台服务器

upstream 负载均衡服务名称{
ip_hash;
server ip:port;
server ip:port;
}
server{
listen port;
server_name ip;
local 表达式{
proxy_pass http://负载均衡服务名称
}
}

fair,根据相应时间来分配

upstream 负载均衡服务名称{
server ip:port [weight=权重系数];
server ip:port [weight=权重系数];
fair;
}
server{
listen port;
server_name ip;
local 表达式{
proxy_pass http://负载均衡服务名称
}
}

动静分离

server{
listen port;
server_name ip;
local /image{
root /data;#当访问/image时,linux会找系统中/data/image文件夹中的内容
autoindex on;#列出文件夹中的文件
}
}

高可用集群

keepalived

yum install keepalived -y
#安装完成后的路径为/etc/keepalived/keepalived.conf
systemctl start keepalived.server
#开启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.17.129 #主机ip
smtp_connect_timeout 30
router_id 服务器主机ip #=127.0.0.1=
}

#脚本配置
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"#脚本路径
interval 2 #(检测脚本执行的间隔);每隔2s检查一次
weight 2 #设置服务器权重
}

#虚拟ip的配置
vrrp_instance VI_1 {
state BACKUP # Master为Master;Salve为BACKUP
interface ens33 #网卡;可以用ip addr 看网卡名
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #每1s发送一次心跳
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟ip地址,多台keepalived绑定一个ip;必须同一网段
}
}
#在/usr/local/src 添加检测脚本
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #nginx启动路径
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived #nginx挂掉后,杀掉这个服务器的所有keepalived进程
fi
fi