nginx安装
若计算机上没有c++安装:yum -y install gcc-c++
1.安装pcre依赖
在线下载:wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
解压:tar -xvf pcre-8.37.tar.gz
进入到解压的目录cd pcre-8.37
执行./configure
进行编译和安装
make && make install
2.安装OpenSSL和zlib
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
3.安装nginx
上传文件解压:
tar -xvf nginx-1.12.2.tar.gz
进入解压后的文件:cd nginx-1.12.2
执行./configure
编译和安装:
make && make install
nginx安装成功
安装之后 cd /usr/local下面会多出一个nginx文件夹
在 nginx文件夹下有个sbin有启动脚本。位置/usr/local/nginx/sbin
在sbin下启动脚本:./nginx (出现错误一)
查看启动的进程:ps-ef | grep nginx
说明启动成功
可以进行查看访问的端口号,
进入:cd /usr/local/nginx/conf
编辑: vim nginx.conf
默认端口号:80
访问nginx的地址:http://192.168.58.101/ (在Windows加载不出来,错误三)
成功访问:
若出现错误解决方式
错误一:若出现找不到错误
进行创建软连接ln -s /usr/local/lib/libpcre.so.1 /lib64
错误二:
如出现
当出现这个错误时,意味着80端口被占用。
方法一、使用:
fuser -k 80/tcp(有用)
将进程杀死后,启动nginx。
方法二、
ps -A | grep nginx
kill -9 pid1
kill -9 pid2
杀死对应的两个进程之后,启动nginx
三。对于访问地址,需要开放端口,Windows浏览器才能访问:
对于CentoOs6.5版本:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
service iptables restart
对于CentoOS7版本:
查看开放的端口号 firewall-cmd --list-all 设置开放的端口号 firewall-cmd --add-service=http –permanent firewall-cmd --add-port=80/tcp --permanent 重启防火墙 firewall-cmd –reload |
Nginx的常用命令
进入nginx目录中
cd /usr/local/nginx/sbin
1.查看nginx版本号
./nginx -v
2.启动nginx
./nginx
3.停止nginx
./nginx -s stop
4.重新加载nginx
./nginx -s reload
nginx的配置文件
在 cd /user/local/nginx/conf/nginx
配置文件中的内容 包含三部分内容 (1)全局块:配置服务器整体运行的配置指令 比如 worker_processes 1;处理并发数的配置 (2) events 块:影响 Nginx 服务器与用户的网络连接 比如 worker_connections 1024; 支持的最大连接数为 1024 (3) http 块 还包含两部分: http 全局块 server 块 |
反向代理实例的实现1:
1.安装jdk;
Linux 上安装jdk1.8 和配置环境变量,参考相关文档,本人在此总结,操作归纳如下。
第一步:创建jdk安装目录(该/usr/local/src 目录是空的,最好把我们自己下载的放到这,容易区分)
第二步:查看安装程序
第三步:命令下载jdk包 (需要联网,下载也需要点时间)
官网下载页面:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
第四步:解压
第五步:配置环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_221 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
第六步:退出文件,保存
第七步:让配置文件生效
第八步:查看是否配置成功
2.上传并解压Tomcat,
tar -xvf apache-tomcat-7.0.70.tar.gz
.启动Tomcat
进入tomcat的bin目录中 cd apache-tomcat-7.0.70/bin
启动:./statup.sh
.查看启动是否成功:
进入tomcat下的logs文件目录
cd apache-tomcat-7.0.70/logs
输入tail -f catalina.out
3.开放8080端口
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/init.d/iptables save
service iptables restart
6.在windows上通过浏览器进行访问
http://192.168.58.101:8080/
访问成功
4.反向代理的功能
C:\Windows\System32\drivers\etc
1.找到HOSTS文件加上:
IP地址 域名
192.168.58.101 www.123.com
2.修改nginx的配置文件
cd /usr/local/nginx/conf
vi nginx.conf
进行修改,将server里面的 server_name 改为 192.168.58.101;
将location里面的加上proxy_pass http://127.0.1:8080;
配置完成。
最后Tomcat:
cd apache-tomcat-7.0.70/bin
启动:./statup.sh
nginx的命令:/usr/local/nginx/sbin
./sbin
最后再window网页上输入http://www.123.com/ 便可以跳转到Tomcat的页面
反向代理实例的实现2:
查看tomcat的端口并进行关闭
ps -ef | grep tomcat 查看tomcat的端口号
杀死进程: kill -9 端口号
1.创建两个tomcat8080和8081文件夹,上传Tomcat压缩包并进行解压
2.对8081文件夹下面的tomcat里面的server.xml更改端口号8081
/root/tomcat8081/apache-tomcat-7.0.70/conf
编辑server.xml,需要进行修改三个位置
启动tomcat,并设置开放端口8081
开放8080端口
/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
/etc/init.d/iptables save
service iptables restart
,在相应tomcat下的webapp下新建一个edu和vod目录存放html
http://192.168.58.101:8080/edu/a.html
http://192.168.58.101:8080/vod/a.html
修改nginx的配置文件/usr/local/nginx/conf
上述监控的端口号是 9001,如果路径中包含edu就近8080端口号,如果包含的是vod就进8081端口号
重新启动nginx
cd /usr/local/nginx/sbin 先进行关闭nginx操作 ./nginx -s stop
在启动 ./nginx
测试: http://192.168.58.101:9001/edu/a.html
相当于:http://192.168.58.101:9001/edu/---------》http://127.0.0.1:8080/
http://192.168.58.101:9001/vod/a.html
相当于http://192.168.58.101:9001/vod/-------》http://127.0.0.1:8081/
实现负载均衡的效果
实现效果:
(1)浏览器的地址栏输入地址 http://192.168.58.101/edu/a.html,负载均衡效果,平均到8080和8081端口中。
准备工作:
(1)准备两台Tomcat服务器,一个是8080,一个是8081
(2)在两台Tomcat里面的webapp目录中,创建名称是edu文件夹,在edu 文件夹中创建页面
a.html,用于测试。
3.在nginx的配置文件中进行负载均衡的配置
测试: http://192.168.58.101/edu/a.html
nginx分配及服务期策略:
第一种:轮询:按照时间的顺序逐一分配到不同的后端服务器,如果后端那个服务器down掉了,能自动剔除
upstreat myserver{
server 192.168.58.101:8080 ;
server 192.168.58.101:8081;
}
第二种:weight;weight代表权重默认是1,权重越高被分配的客户端越多
upstreat myserver{
server 192.168.58.101:8080 weight=5;
server 192.168.58.101:8081 weight=10;
}
第三种:ip_hash:每个请求按访问IP的hash结果分配,每个访客固定访问一个后端服务器
upstreat myserver{
ip_hash;
server 192.168.58.101:8080 weight=5;
server 192.168.58.101:8081 weight=10;
}
第四种:fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstreat myserver{
server 192.168.58.101:8080 ;
server 192.168.58.101:8081;
fair;
}
动静分离
nginx 配置静态资源,一个html 一个png
1;创建两个文件夹存放静态资源
2.修改配置文件
2.
3.最终测试
(1)浏览器中输入地址http://192.168.58.101/image/01.png
(2)http://192.168.58.101/www/a.html
高可用nginx配置
(1)需要两台nginx服务器
(2)需要keepalived
(3)需要虚拟ip
配置高可用的准备工作
(1)需要两台服务器192.168.58.101和192.168.58.102
(2)在两台服务安装nginx
(3)在两台服务器上安装keepalived
(1)两个服务器上都得有安装好的nginx
(2)安装keepalived
cd /usr
yum install keepalived -y
查看是否安装成功:rpm -q -a keepalived
修改两个服务器中的keepalived的配置文件 /etc/keepalived
vi keepalived.conf
#主服务器keepalived.conf
global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.58.101 smtp_connect_timeout 30 router_id node01 } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface eth0 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.58.99 // VRRP H 虚拟地址 } }
#备份服务器keepalived.conf global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.58.102 smtp_connect_timeout 30 router_id node02 } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state BACKUP# 备份服务器上将 MASTER 改为 BACKUP interface eth0 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.58.99 // VRRP H 虚拟地址 } }
#nginx_check.sh #!/bin/bash A=`ps -C nginx – no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
编写nginx_check.sh 放在/usr/local/src/nginx_check.sh
3.启动l两个服务器的nginx和keepalived
启动nginx:
cd /usr/local/nginx/sbin 先进行关闭nginx操作 ./nginx -s stop
在启动 ./nginx
启动keepalived的命令:systemctl start keepalived.service (若不行用 service keepalived start )
查看keepalived进程是否启动: ps -ef | grep keepalived
4.最终测试
(1)在浏览器的地址栏中输入 虚拟ip地址 192.168.58.99
在主服务器中输入 ip a 查看是否成功绑定了虚拟ip
(3)在地址栏输入192.168.58.99会出现nginx的页面
(2)把主服务器(192.168.58.101)的nginx和keepalived停止,在输入192.168.58.99
停止nginx: cd /usr/local/nginx/sbin
./nginx -s stop
停止keepalived命令
./nginx -s stop
编辑主机名: vi /etc/hosts
加上ip地址 主机名
127.0.0.1 LVS_DEVEL #访问主机名(主机名需要与keepalived.conf配置文件总的 router_id 后的主机名保持一致)