nginx使用
1.nginx 基本概念
1.nginx是什么?能干什么?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,特点是占有内存少,并发能力强
nginx专为性能优化而设计,能够支持高达 50,000 个并发连接数的响应
支持热部署,不需要重启服务
2.反向代理
正向代理: 代理客户端
反向代理:代理服务器,分发到不同的服务器,暴露代理服务器地址,隐藏真实服务器的ip地址
3.负载均衡
4.动静分离
2.nginx安装及配置
安装
官网:http://nginx.org/ 选择1.12.2 版本 xshell rz 上传到/user/local
1.安装nginx 依赖:
pcre
wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
tar -zxvf pcre-8.40.tar.gz
进入解压目录 执行./configure 要先安装c编译器:yum -y install gcc
make && make install
验证安装是否成功: pcre-config -version
openssl && zlib
yum -y install make zilib zlib-devel gcc-c++ libtool openssl openssl-devel
一键安装
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.安装nginx
1.tar -zxvf nginx-1.12.2.tar.gz 2.进入解压包目录执行 ./configure 3. make && make install
4. 安装成功之后,在usr多出一个文件夹 local/nginx,在nginx有sbin有启动脚本
5. 进入sbin目录执行./nginx 启动nginx
6.验证nginx是否启动成功: ps -ef | grep nginx
访问nginx
配置nginx的端口号
软件安装目录 :/usr/local
进入目录: /usr/local/nginx/conf
编辑niginx 的配置文件: vim nginx.conf
查看开放的端口号:firewall-cmd --list-all
开放端口号80:Firewall-cmd --add-port=80/tcp
nginx常用命令
1.使用nginx操作命令前提条件:必须进入nginx的目录: /usr/local/nginx/sbin
2.查看nginx的版本号
./niginx -v
3.启动nginx
./niginx
4.关闭nginx
./nginx -s stop
5.重新加载nginx:
修改nginx.conf 文件不需要重启nginx就可以生效
./nginx -s reload
配置
1.配置文件位置
/usr/local/nginx/conf
2.配置文件结构
第一部分 全局快
从配置文件开始到events之间的叫全局块,主要设置一些影响nginx服务器整体运行的配置指令
比如:worker_processes 1; worker_processes 值越大,可以支持的并发处理量也越多
第二部分 events快
主要影响 nginx服务器与用户网络连接
比如 worker_connections 1024 支持的最大链接数
第三部分 http块
这部分是nginx配置最频繁的部分,代理,缓存,和日志定义等绝大多数功能和第三方模块的配置都在这里。(反向代理,负载均衡,动静分离,高可用)
需要注意的是:http块包括http全局块,server块
全局块
http全局块配置的指令包括文件引入,MIME-TYPE定义,日志定义,连接超时时间,单链接请求数上限等
server块
这块和虚拟主机有密切关系,
每个http块可以有多个server块,而每个server块就相当于一个虚拟主机
而每个server块也分为全局server块,以及可以同时包含多个location块
1.全局server
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置
2.location块
一个server块可以配置多个location块
这块的主要作用是基于Nginx服务器收到的请求字符串(例如:server_name/url-string),对虚拟机名称(也可以是IP别名)
之外的字符串(例如:前面的url-string)进行匹配,对特定的请求进行处理,地址定向,数据缓存和应答控制等功能,
还有许多第三方模块的配置也在这里进行
3.nginx 配置实例反向代理
实例1:
1.实现效果: 浏览器输入www.123.com,跳转到linux系统tomcat的主页中
2.安装tomcat 官网下载包 core
1.解压tomcat包:/usr/src tar -zxvf apache-tomcat-7.0.103.tar.gz 2.进入解压包:/usr/src/apache-tomcat-7.0.103 bin目录 3. 启动tomcat :./startup.sh 4. 查看tomcat logs : tail -f tal -f catalina.out 查看是否启动成功
5. firewall-cmd --list-all firewall-cmd --add-port=8080/tcp
6. 访问Tomcat tomcat 启动成功
本地hosts文件配置
192.168.1.101 www.123.com
配置 nginx的配置文件
/usr/local/nginx/conf/nginx.conf
进入解压包:/usr/src/apache-tomcat-7.0.103 bin目录
启动tomcat : ./startup.sh 输入www.get.com 即可访问到tomcat
实例2:
预期实现:
4.nginx 配置实例负载均衡
nginx 负载均衡策略
weight配置:
ip hash 配置: 根据用户的ip地址 让用户去访问固定的服务器,解决session问题
fair(第三方): 根据服务响应时间,响应时间越短 就优先分配
5.nginx 配置实例动静分离
准备:
动静分离是把动态请求和静态请求分开,动态请求去访问tomcat服务,静态去访问静态资源服务器
提高访问效率的其它配置
6.nginx 配置高可用集群
1、需要的环境
两台 Linux 并各自安装 Nginx 和 keepalived
2、配置高可用的准备工作
(1)需要两台服务器 192.168.17.129 、192.168.17.131
(2)在两台服务器安装 Nginx(可以参考前面文章)
(3)在两台服务器安装 keepalived
3、两台服务器都安装 keepalived
(1)、使用 yum 命令进行安装
yum install keepalived –y
(2)、keepalived 安装之后,其配置文件目录如下:
/etc/keepalived/keepalivec.conf
4、完成高可用配置(主从配置)
(1)修改/etc/keepalived/keepalivec.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.17.129 smtp_connect_timeout 30 # 通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL router_id LVS_DEVEL } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" # 执行脚本所在的位置 interval 2 #检测脚本执行的间隔,单位秒,每个2秒执行一次脚本 weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface ens33 # 绑定的网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 #每隔一秒发送一次心跳,确保从服务器是否还活着 authentication { # 心跳检测需要的密码 auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.17.50 # VRRP H 虚拟地址 } }
(2) 把两台服务器上 nginx 和 keepalived 启动
启动 nginx: ./nginx
启动 keepalived: systemctl start keepalived.service
可以使用ipconfig,查看虚拟Ip的绑定
5、最终测试
(1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50
(2)把主服务器上的(192.168.17.129)Nginx 和 keepalived 停止,再输入 192.168.17.50,依旧可以访问Nginx。