重庆建工集团建设网站,wordpress 强制ssl,wordpress百度数据,阿里巴巴国际站运营教程一、nginx基本概念
1. nginx是什么#xff0c;做什么事情#xff1f;
Nginx是一个高性能的HTTP和反向代理服务器#xff0c;特点是占有内存少#xff0c;并发能力强。Nginx转为性能优化而开发#xff0c;能经受高负载考验。支持热部署#xff0c;启动容易#xff0c;运…一、nginx基本概念
1. nginx是什么做什么事情
Nginx是一个高性能的HTTP和反向代理服务器特点是占有内存少并发能力强。Nginx转为性能优化而开发能经受高负载考验。支持热部署启动容易运行时间长。
2. 反向代理
正向代理在客户端浏览器配置代理服务器通过代理服务器进行互联网访问。
反向代理客户端对代理无感知客户端不需要任何配置即可访问服务器。客户端只需要将请求发送到反向代理服务器由反向代理服务器去选择目标服务器获取数据后返回给客户端此时反向代理服务器和目标服务器对外就是一个服务器暴露的是代理服务器地址隐藏了真实服务器IP地址。 3. 负载均衡
增加服务器的数量将请求分发到各个服务器上将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上将附在分发到不同的服务器就是负载均衡。 负载均衡是将负载分摊到不同的服务单元既保证服务的可用性又保证响应足够快给用户良好的体验。
策略
1.轮询默认每个请求按时间顺序逐一分配到不同的后端服务器如果后端服务器down掉了能自动剔除。
2.weight权重权重默认为1权重越高被分配的客户端越多。 3.ip_hash每个请求按访问ip的hash结果分配这样每个访客固定访问一个后端服务器可以解决session的问题。 4. fair方式按后端服务器的响应时间来分配请求响应时间短的优先分配。
4. 动静分离
把动态页面和静态页面由不同的服务器来解析加快解析速度降低原来单个服务器的压力加快网站的解析速度。 Nginx动静分离简单来说就是把动态跟静态请求分开不能理解成只是单纯的把动态页面和静态页面物理分离严格意义上说应该是动态请求跟静态请求分开可以理解成使用Nginx处理静态页面Tomcat处理动态页面。 动静分离从目前实现角度来讲大致分为2种一种是纯粹把静态文件独立成单独的域名放在独立的服务器上也是目前主流推崇的方案另外一种方法是动态跟静态文件混在一起发布通过nginx分开。
通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置可以使浏览器缓存过期时间减少与服务器之间的请求和流量。具体Expires定义是给一个资源设定一个过期时间也就是说无需去服务端验证直接通过浏览器自身确定是否过期即可所以不会产生额外的流量。此种方法非常适合不经常变动的资源。如果经常更新的文件不建议使用Expires来缓存在这里设置3d表示在这3天之内访问这个URL发送一个请求比对服务器该文件最后更新时间没有变化则不会从服务器抓去返回状态码304如果有修改则直接从服务器重新下载返回状态码200。
二、nginx安装、常用命令和配置文件
1. 在linux系统中安装nginx
首先打开终端 输入ifconfig看ens33中inet中的值如果没有显示ip地址就用nmtui指令对ens33进行连接后再次尝试 第1步使用远程连接工具连接linux系统。
打开XshellXshell好处1.避免切进切出影响效率 2.复制粘贴不方便填写主机名ip其余默认 用户名是user输入虚拟机上Linux密码即可登录 第2步下载nginx相关素材依赖
1. 下载pcre、openssl和zlib
下面一键安装
sudo yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 通过下面的连接下载tar.gz文件我下载的是1.24.0
Index of /download/ (nginx.org)
解压压缩文件tar -xvf nginx-1.24.0.tar.gz
进入nginx文件cd nginx-1.24.0/ 然后输入./configure
编译安装sudo make install
进入sbincd /usr/local/nginx/sbin 运行nginxsudo ./nginx
下面这样是成功 :q!是退出
访问端口80但默认该端口是不开放的因此要按照如下方法打开该端口 查看防火墙sudo firewall-cmd --list-all
开放80端口sudo firewall-cmd --add-port80/tcp --permanent
重启防火墙sudo firewall-cmd --reload
开放端口后即可访问 2. nginx常用命令
使用nginx操作命令前提条件必须进入到nginx的目录里
在[userlocalhost ~]$或者[userlocalhost /]$目录下cd /usr/local/nginx/sbin
查看nginx的版本号./nginx -v
启动nginx./nginx
关闭nginxsudo ./nginx -s stop
重新加载nginx可以重新加载配置文件使其生效sudo ./nginx -s reload
3. nginx配置文件
打开进入文件vi 文件名
1. nginx配置文件所在位置
/usr/local/nginx/conf/nginx.conf
2. nginx配置文件的组成
由3部分组成
第1部分全局块
主要设置一些影响nginx服务器整体运行的配置指令主要包括配置运行Nginx服务器的用户组允许生成的worker process数进程PID存放路径日志存放路径和类型以及配置文件的引入。
比如worker_processes 1; 当worker_processes的值越大可以支持的并发处理数量也就越多。
第2部分events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接选取哪种事件驱动模型来处理连接请求每个word process可以同时支持的最大连接数等。
worker_connection 1024用户连接数表示支持最大的连接数是多少。
第3部分http块
3.1 http块
Nginx服务器配置中最频繁的部分代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是http块也可以包括http全局块、server块。
3.2 全局块
http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、但连接请求上限等。
3.3 server块
这块和虚拟主机有密切关系虚拟主机从用户角度看和一台独立的硬件主机是完全一样的该技术的产生是为了节省互联网服务器硬件成本。
小块1全局server块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置
小块2location块
一个server块可以配置多个location块。
这块的主要作用是基于Nginx服务器接收到的请求字符串例如 server_name/uri-string对虚拟主机名称也可以是IP别名之外的字符串例如 前面的/uri-string进行匹配对特定的请求进行处理。地址定向数据缓存和应答控制等功能还有许多第三方模块的配置也在这里进行。
listen 80; 表示nginx目前监听的端口是80端口。
server_name localhost表示主机名称。
location / {} 本地或者路径的意思如果请求中带有一个斜杠就进行跳转。
三、nginx实现反向代理
3.1 反向代理准备工作
1.1 实现效果打开浏览器在浏览器地址栏输入地址www.123.com跳转到linux系统的tomcat主页面中。
1.2 准备工作
第1步在linux系统安装tomcat将tomcat安装文件放到linux系统中解压sudo tar -xvf apache-tomcat-8.5.93.tar.gz进入tomcat的bin目录中./startup.sh启动tomcat服务器使用默认端口8080。
第2步对外开放访问的端口
开放8080端口firewall-cmd --add-port8080/tcp --permanent
重启端口firewall-cmd --reload
查看已开放的端口firewall-cmd --list-all
第3步访问注意一定要用8080端口访问 3.2 反向代理实例一
第1步在windows系统的host文件进行域名和ip对应关系的配置
c — Windows — System32 — drivers — etc — HOSTS
添加下面内容在文件中
192.168.182.130 www.123.com
完成后域名www.123.com即对应192.168.182.130。
在打开tomcat的前提下输入www.123.com:8080可访问tomcat服务器 第2步在nginx进行请求转发的配置反向代理配置
usr — local— nginx— conf— nginx.conf 进入到配置文件对下面内容进行修改 修改完后保存输入:wq!
前面已将192.168.182.130:80与域名www.163.com进行关联当用户访问www.163.com会跳转到http://127.0.0.1:8080。
因为之前tomcat的页面是在192.168.182.130:8080所以我改造了一下替换为proxy_pass http://192.168.182.130:8080;记得要加分号哦 3.3 反向代理实例二
实现目标
使用nginx反向代理根据访问的路径跳转到不同端口的服务中。
nginx监听端口为9001
访问 http://192.168.182.130:9001/edu/ 直接跳转到192.168.182.130:8080
访问 http://192.168.182.130:9001/web/ 直接跳转到192.168.182.130:8081
准备工作
第1步创建测试服务器
准备2个tomcat服务器一个8080端口一个8081端口。
首先要进入到usr/src目录。sudo mkdir tomcat8080sudo mkdir tomcat8081创建2个文件夹。
分别进入2个文件夹放入压缩包这里可能出现导入失败是权限问题sudo rz然后解压文件sudo tar -xvf apache..按Tab自动补全
找到tomcat目前正在执行的进程 ps -ef | grep tomcat停用进程 kill -9 进程号
分别进入两个文件夹的apache文件然后进入bin文件夹然后./startup.sh启动。
进入8081中apache的文件夹的conf文件夹中输入vi server.xml进入配置文件修改未在注释中的端口防止端口冲突。输入:wq!进行保存重新查看是否更改。 第2步基础测试
首先要开放对外访问的端口号900180808081然后查看是否端口开放完毕。
查看开放的端口sudo firewall-cmd --list-all。开放80端口sudo firewall-cmd --add-port80/tcp --permanent。重启防火墙sudo firewall-cmd --reload。
然后分别进行测试看是否能访问tomcat出现下面界面代表成功【注意要检查xml文件中是否有其它字符例如鼠标滚轮滚动会造成添加其它字符这些字符会导致服务器无法正常启动】 创建测试页面a.html在其中写入代码h18080!!/h1。创建测试目录在tomcat8080的webapps下创建文件夹edu在tomcat8081的webapps下创建文件夹web。将带有8080字样的a.html文件放入edu文件夹下将带有8081字样的a.html文件放入web文件夹下。可以通过如下方式访问也可以将ip更改为域名www.123.com进行访问 第3步反向代理
注意按下面规则进行配置 首先要找到nginx配置文件usr — local — nginx — conf 然后vi nginx.conf进入配置开始进行反向代理配置 usr — local — nginx — sbin 输入 sudo ./nginx -s stop关闭端口sudo ./nginx开启端口。 ~ /web/ 表示必须是域名/web/ 才可以识别
四、nginx实现负载均衡
实现效果浏览器地栏输入地址http://192.168.182.132/edu/a.html负载均衡效果平均8080和8081端口中。
准备工作准备2台tomcat服务器一台8080一台8081。在两台tomcat里面的webapps目录中创建名称为edu的文件夹在edu文件夹中创建页面a.html用于测试。
在8081中的webapps目录下创建edu文件夹mkdir edu然后放入a.html文件文件里写8081测试能否通过http://192.168.182.132:8081/edu/a.html来显示文字若无则记得打开服务器。
在usr — local — nginx — conf目录中vi nginx.conf进行配置 重启服务器进入conf — nginx 先关闭服务器./nginx -s stop再开启服务器./nginx。
输入http://192.168.182.132/edu/a.html进行测试效果是8081和8080交替出现请求会被平均分担到不同服务器。 五、实现动静分离
在根目录创建一个文件夹data进入data文件夹创建文件夹www和image把a.html文件放入www文件夹在image里放入一个图片01.jpg。
进入 usr— local — nginx — conf 然后vi nginx.conf 进入usr — local — nginx— sbin 先输入./nginx -s stop然后 ./nginx重启服务器。
测试1浏览器种输入地址http://192.168.182.132/image/会出现文件夹下的文件列表autoindex.on是列出文件夹下的内容 测试2在浏览器地址栏输入地址http://192.168.182.132/www/a.html 测试3http://192.168.182.132/image/01.jpg
六、nginx配置高可用集群
现在存在的问题是当nginx宕机后外部浏览器无法访问客户端 高可用当nginx宕机后系统仍旧可以正常访问。
可以配置多个nginx一台主服务器MASTER一台备份服务器BACKUP.。当主服务器宕机可以切换到备份服务器。需要设置一个虚拟ip进行访问。
准备需要两台nginx服务器需要keepalived需要虚拟ip。
1. 需要2台服务器比如192.168.182.132 192.168.182.133。然后在另外一台服务器上也安装nginx。
2. 在2台服务器安装keepalived。可以使用yum命令进行安装。在usr目录下输入yum install keepalived -y。在usr目录下输入rpm -q -a keepalived可以看到软件是否被下载。
3. 在usr — etc — keepalived目录下有keepalived.conf文件可以拖到本地进行编辑要讲内容替换为下面新的内容输入vi keepalived.conf即可进入文件。配置文件如下 global_defs全局定义。router_id写我们的服务器的名字通过router_id可以访问我们服务器进入usr — local — nginx — sbin — etc输入vi hosts vrrp_script chk_http_port是检测脚本和权重参数script后写脚本的路径如果脚本成立执行下面的操作。weight -20表示减少20服务器权重。
vrrp_instance VI_1是虚拟Ip的配置state是状态主服务器MASTER备份服务器是BACKUPinterface填写网卡priority是优先级advert_int表示间隔多久时间发送一个心跳authentication写的是权限校验的方式auth_type PASS是密码方式auth_pass 1111是密码virtual_address是虚拟地址客户端请求访问的地址。
下面是脚本文件第4行填写的是nginx启动的路径将脚本文件放在usr — local — src下 配置从服务器要更改interfacestatepriority等信息。脚本信息不变 七、nginx原理
1. master worker只有1个master可以有多个worker 2. worker采用争抢的机制进行工作。 3. 一个master和多个woker的好处1、可以使用nginx -s reload热部署利用nginx进行热部署操作。2、每个worker是独立的进程如果其中有一个woker出现问题其它woker会继续进行争抢实现请求过程不会造成服务中断。
4. worker数和服务器的cpu数是相等的最为适宜。
5. 发送请求的时候每个worker占用2个或4个请求。
八、学习复盘
5.1 学习心得
5.2 面试真题
5.3 常见错误
压缩文件上传失败sudo rz 获取权限
进入文件权限不够su root 先进入到最高权限所有者