一、nginx安装
下载nginx软件包 [root@x112 ~]# wget -c http://nginx.org/download/nginx-1.12.2.tar.gz [root@x112 ~]#tar -xf nginx-1.12.2.tar.gz [root@x112 ~]#cd nginx-1.12.2 安装nginx所需依赖包 [root@x112 nginx-1.12.2]#yum -y install pcre zlib-devel openssl gcc 预编译、编译、安装 [root@x112 nginx-1.12.2]#./configure --user=nginx --group=nginx [root@x112 nginx-1.12.2]# make && make install [root@x112 nginx-1.12.2]#cd /usr/local/nginx/sbin [root@x112 nginx-1.12.2]#ln -s /usr/local/nginx/sbin/nginx /usr/bin/ [root@x112 nginx-1.12.2]#nginx 查看nginx版本信息 [root@x112 nginx-1.12.2]#nginx -V nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) configure arguments: --user=nginx --group=nginx
二、nginx反向代理
[root@x112 ~]# cd /usr/local/nginx/conf/
[root@x112 conf]# ls
fastcgi.conf fastcgi_params.default mime.types nginx.conf.default uwsgi_params
fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default
fastcgi_params koi-win nginx.conf scgi_params.default win-utf
反向代理,添加upstream集群模块,server虚拟主机中添加关键字proxy_pass指向后端集群模块名称
[root@x112 conf]# vim nginx.conf
..............
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream webserver {
server 192.168.2.13:80;
}
server {
listen 81;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://webserver;
}
三、nginx版本升级
[root@x112 conf]# nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --user=nginx --group=nginx
[root@x112 conf]# cd ..
[root@x112 software]# ls
nginx-1.12.2 nginx-1.12.2.tar.gz nginx-1.14.2 nginx-1.14.2.tar.gz
[root@x112 software]# cd nginx-1.14.2/
[root@x112 nginx-1.14.2]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
开始编译高版本的nginx,注意编译参数与旧版本的保持一致
[root@x112 nginx-1.14.2]# ./configure --user=nginx --group=nginx
checking for OS
+ Linux 3.10.0-693.el7.x86_64 x86_64
checking for C compiler ... found
+ using GNU C compiler
+ gcc version: 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
.........................
[root@x112 nginx-1.14.2]# make
make -f objs/Makefile
make[1]: Entering directory `/root/linshi/software/nginx-1.14.2'
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
-o objs/src/core/nginx.o \
src/core/nginx.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
-o objs/src/core/ngx_log.o \
[root@x112 nginx-1.14.2]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
[root@x112 nginx-1.14.2]# ls objs/
autoconf.err nginx ngx_auto_config.h ngx_modules.c src
Makefile nginx.8 ngx_auto_headers.h ngx_modules.o
备份现有版本的nginx
[root@x112 nginx-1.14.2]# mv /usr/local/nginx/sbin/{nginx,_bak}
[root@x112 nginx-1.14.2]# ls /usr/local/nginx/sbin/
nginx_bak
拷贝编译后的高版本的nginx,替换原有的旧版本nginx
[root@x112 nginx-1.14.2]# cp objs/nginx /usr/local/nginx/sbin/
[root@x112 objs]# nginx
[root@x112 objs]#
[root@x112 objs]# ps -ef | grep nginx
root 9164 1 0 10:47 ? 00:00:00 nginx: master process nginx
nginx 9165 9164 0 10:47 ? 00:00:00 nginx: worker process
root 9171 1248 0 10:47 pts/1 00:00:00 grep --color=auto nginx
[root@x112 objs]# nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --user=nginx --group=nginx
[root@x112 objs]#
四、nginx高可用,keepalive配置
[root@x112 linshi]# vim /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_nginx{
script "/etc/keepalived/chk_nginx.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.0.66
}
}
我们可以通过检测80端口是否开启来判定Nginx的运行情况,2秒钟检测一次,脚本如下
[root@x112 linshi]#vim /etc/keepalived/chk_nginx.sh
#!/bin/bash
while true
do
if [ $(netstat -tlnp|grep nginx|wc -l) -ne 1 ]
then
/etc/init.d/keepalived stop
fi
sleep 2
done
为者常成,行者常至
Give me five~!
浙公网安备 33010602011771号