热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx入门指南:从零开始掌握基础配置与优化技巧

一.nginx概念 在学习nginx之前,带着这几个疑惑去学习1.nginx是什么,他可以做什么?2.反向代理?3.负载均衡?4.动静分离? 1.nginx是一个轻量级的http,web服务器 优
一.nginx概念

在学习nginx之前,带着这几个疑惑去学习
1.nginx是什么,他可以做什么?
2.反向代理?
3.负载均衡?
4.动静分离?

1.nginx是一个轻量级的http,web服务器
优点:高性能,并发能力强,可做反向代理。
附:同时也提供了IMAP/POP3/SMTP服务
2.什么是反向代理?
ok 举个例子:
先看下正向代理
eg1.如果国内访问谷歌,我们不可以直接访问,需要先请求代理服务器,再由代理服务器,将请求去转发到谷歌,最后将结果返回。

nginx基础之路
image.png

反向代理
eg2.我们去访问www.baidu.com 我们只知道访问了百度,得到了想要资源,但是,到底是哪台服务器给我们的资源我们并不知道。
而在百度内部,假设有A,B,C三台服务器,我们访问了百度(其实是访问了反向代理服务器),他会去根据一些算法,去给我们找到真正有资源的A,B,C服务器,最后由三台中的一台,将资源给反向代理服务器,再由反向代理服务器,将资源给我们。

nginx基础之路
image.png

区别:
正向代理,对server端(谷歌)透明,Server端只知道是代理服务器,访问了他,是否让他知道用户信息由代理服务器决定。
反向代理,对client端透明,client端只知道请求了百度(其实是反向代理服务器)拿到了想要的资源,而具体是百度内部,ABC服务器中的谁给他的,他不知道。

个人理解:客户端为正,服务端为反,重点在服务端内部进行一系列操作(反为重点),所以被称为反向代理,反之不是反向代理,另一种就是正向代理了。
正对服务端透明 客户端配置
反对客户端透明 服务端配置 客户端无感知

3.负载均衡
最初我们早期BS架构
多个客户端对应一个服务器,在请求不多时,服务器完全够用。

nginx基础之路
image.png

后随着时代的发展,客户端请求越来越多,单一的服务器很难满足用户需求,抗住大量并发。
所以 先将请求先集合到一台服务器,再分发给其他服务器完成。——负载均衡

nginx基础之路
image.png

4.动静分离
动态静态资源在一起

nginx基础之路
image.png

动静态资源分开

nginx基础之路
image.png

将动态请求与静态请求分开
可理解为
tomcat解析动态资源
nginx解析静态资源
动静分离优点:将动静态资源分开,让动静服务器解析自己的资源,加快网页解析,缓解单个服务器压力。
ps:不是单纯的动静态页面分开

二.nginx安装,配置,及命令
  1. Nginx编译相关依赖库的安装
    安装gcc g++的依赖库
    sudo apt-get install build-essential
    sudo apt-get install libtool
    安装pcre依赖库(http://www.pcre.org/)
    sudo apt-get install libpcre3 libpcre3-dev
    安装zlib依赖库(http://www.zlib.net)
    sudo apt-get install zlib1g-dev
    安装SSL依赖库
    sudo apt-get install openssl
    官网下载tar包http://nginx.org/en/download.html
    下载下来之后:
    tar -zxvf nginx-1.18.0.tar.gz
    cd nginx-1.18.0/
    ./configure
    make #编译
    make install
    验证有没有成功
    cd /usr/local
    ls #发现有nginx文件夹
    cd nginx
    cd sbin
    ./nginx #如果权限不够 加上sudo
    查看应用是否启动成功
    ps -ef |grep nginx
    cd /usr/local/nginx/conf
    more nginx.conf

    nginx基础之路
    image.png

    默认端口号是80
    浏览器访问http://localhost:80 #80可省略

nginx基础之路
image.png

OK 至此nginx 安装完成

PS windows访问可能要注意
将80端口设置可访问

nginx基础之路
image.png

2.nginx常用命令
前提要进入到 cd /usr/local/nginx/sbin 下
查看版本
./nginx -v
关闭ngnix
nginx -s stop
启动ngnix
./nginx

./nginx -s 参数
stop —快速关机
quit —正常关机
reload —重新加载配置文件
reopen —重新打开日志文件
3.解读配置文件
3.1全局块
3.2event块
3.3http块

三.nginx配置实例

1.反向代理
ok,要配置第一步我们先要找到配置文件

/usr/local/nginx 下的conf文件

nginx基础之路
image.png

nginx配置文件组成
(1).全局块
nginx全局配置,影响nginx整体运行

eg.

nginx基础之路
image.png

nginx用来处理服务器的工作进程数

(2)events块
nginx服务器允许用户网络连接数
下面表示1024个

nginx基础之路
image.png

(3)http块
nginx配置最多的地方,代理,缓存,日志等就是在此处配置的。
里面又分http全局块,server块
http全局块:
日志自定义,超时时间,等等
server块:一个server相当于一个虚拟主机,可以有多个虚拟机
里面还分
server全局块 监听端口,主机ip地址。
location块 请求路径/有关。
简单的反向代理流程:

nginx基础之路
image.png

在vi /etc/hosts 加上:

nginx基础之路
image.png

nginx中配置

nginx基础之路
image.png

ok访问 www.123.com 发现访问的是 本地8080端口的tomcat
反向代理实例2:
访问168.56.43.11:9999/8080html 进入到127.0.0.1:8080
访问168.56.43:11:9999/8081html 进入到127.0.0.1:8081
首先启动两个tomcat实例,一个端口为8080,一个为8081
在tomcat目录中的webapps,创建一个文件加8080html再创建一个文件a.html

nginx基础之路
image.png

测试一下:访问http://127.0.0.1:8080/8080html/a.html
nginx中配置

nginx基础之路
image.png

ok配置完成
输入
http://168.56.43.11:9999/8080html/a.html ok
location配置规则

nginx基础之路
location配置规则

2.负载均衡
输入172.23.24.XX/html/a.html 负载均衡效果,被8080,8081端口分摊
先启动两个tomcat webapps目录下均建立html/a.html
nginx配置中

nginx基础之路
image.png

默认采用轮询策略
补充:weight 权重策略 默认个为1
在server 172.23.24.xx 后面加 weight=5 越大表示越先分配

nginx基础之路
image.png

ip_hash策略
给A用户分配a服务器,B用户分配b服务器,只要服务器不宕机固定访问a,b
可以解决session的缓存的问题

nginx基础之路
image.png

fair策略
根据服务器响应时间,越短就越先分配

nginx基础之路
image.png

3.动静分离

nginx基础之路
动静分离

配合浏览器 expire缓存使用,在特地时间内去访问静态不容易变的资源,去比对服务器中,改文件的更改时间,如果在时间内,就不用去请求服务器。
要求:
当请求192.168.1.X www/a.html 访问的是本地/opt/test/www/a/html
当请求192.168.1.X image/ 访问的是本地/opt/test/iamge/
配置如图
autoindex on 参数是帮你把改目录下文件列出来

nginx基础之路
image.png

expires 3d 在location加入 表示3天内

4.高可用集群

nginx基础之路
image.png

之前nginx流程如图所示,如果这一台nginx宕机了怎么办
这里有个备份nginx概念,主nginx宕机,有备份nginx来处理。怎么知道是否宕机?借助于keepalived检测
至于客户端怎么知道是访问主nginx还是备nginx?有个虚拟ip的概念,对外暴露的只是虚拟ip

nginx基础之路
高可用

具体配置看此视频

四.nginx原理

nginx实际分为master进程和多个work进程,master得到请求将任务分给work,由work执行

nginx基础之路
image.png

而work是通过争抢机制去拿到任务

nginx基础之路
image.png

多个work的好处
nginx -s reload 是热部署,这样只有现在有任务的work不能停止,而其他work可以停止去读取配置文件。
各个work都是独立的,即使有个work出现错误,也不会影响其他work工作
每个work是个独立的进程,而且每个进程里面只有一个独立的线程,并且采用io多路复用的方式,这样的好处就是可以处理多个task不会出现堵塞
如何设置work?
work数与服务器cpu数相等
多了会造成线程上线文切换的开支
少了会造成浪费

参考:
反向代理,正向代理区别
nginx
nginx安装


推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 深入解析Dubbo:使用与源码分析
    本文详细介绍了Dubbo的使用方法和源码分析,涵盖其架构设计、核心特性和调用流程。 ... [详细]
  • MOSS2007 中型服务场配置指南:网络负载均衡集群设置
    本文详细介绍了如何在MOSS2007环境中配置网络负载均衡集群,包括安装和配置网络负载均衡功能的具体步骤。通过本文,读者可以了解如何在多台Web服务器上安装并配置网络负载均衡,以实现高效的服务分发。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文详细介绍了如何在Linux系统中使用nslookup命令查询DNS服务器地址,这对于Linux服务器的运维管理是非常重要的基础知识。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文深入解析了Spring Cloud路由网关Zuul的核心功能及其典型应用场景。通过对方志朋老师教材的学习和实践,详细探讨了Zuul在微服务架构中的重要作用,包括请求路由、过滤器链管理以及服务动态扩展等关键特性。同时,结合实际案例,展示了Zuul在高并发和复杂业务场景下的应用优势,为读者提供了全面的技术参考。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
author-avatar
手机用户2502939977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有