立即注册 找回密码

QQ登录

只需一步,快速开始

豆包只能上面
查看: 12|回复: 0

[通用使用教程] Nginx的搭建与核心配置讲解

[复制链接]

86

主题

0

回帖

1401

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1401
发表于 昨天 18:48 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一.Nginx是什么?
1.Nginx概述
一款高新能、轻量级Web服务软件系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30 000~50 000个并发请求。Nginx(发音同"engine x")是一个高性能的反向代理和 Web服务器软件,最初是由俄罗斯人 Igor Sysoev开发的。Nginx 的第一个版本发布于2004年,其源代码基于双条款 BSD许可证发布,因其系统资源消耗低、运行稳定且具有高性能的并发处理能力等特性,Nginx 在互联网企业中得到广泛应用。Nginx 是互联网上最受欢迎的开源 Web 服务器之一,它不仅提供了用于开发和交付的一整套应用技术,还是应用交付领域的开源领导者。
2019年 3月,著名硬件负载均衡厂商F5宣布收购 Nginx,Nginx成为F5的一部分。F5表示,将加强对开源和 Nginx 应用平台的投资,致力于Nginx 开源技术、开发人员和社区的发展,更大的投资将为开放源码计划注人新的活力,会主办更多的开放源码活动,并产生更多的开放源码内容。
2.Nginx模块与作用
  1. main模块:全局配置模块,所有模块都要执行遵守

  2. 配置运行nginx服务器的用户(组)、worker_process数(进程)、nginx进程PID存放路径、错误日志存放路径、配置文件的引入等stream服务模块:实现反向代理功能,包括TCP协议代理邮件服务模块:主要用于支持 Nginx 的邮件服务对 POP3 协议、 IMAP 协议和 SMTP协议的支持

  3. 第三方模块:二次开发,为了扩展 Nginx 服务器应用,完成开发者自定义功能

  4. Json 支持、 Lua 支持等

  5. events模块:影响nginx服务器与用户的网络连接

  6. events {                                              #events模块设置

  7. woker_connections 65536;                #设置单个工作进程最大并发连接数

  8. use epoll;                                           #事件驱动类型选择为epoll

  9. accept_mutex on;                              #同一时刻一个请求轮流由work进程除了,即轮询

  10. multi_accept on;                                #每个工作进程同时接受多个网络连接

  11. }

  12. http模块:跟web服务相关,主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,包含几个子模块

  13. 自定义服务日志、允许sendfile方式传输文件、连接超时时间、单连接请求数上限、Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

  14. location模块:uri网址定位

  15. server模块:服务模块

  16. 配置80端口监听、虚拟主机、DNS域名解析等

  17. auth_basic模块:对网页设置用户名密码

  18. gzip模块:压缩

  19. proxy模块:设置后端IP地址、端口号及http和加密的https

  20. ssl模块:https加密
复制代码
3.Nginx三大作用:反向代理、负载均衡、动静分离
  1. 反向代理:在服务端 配置,客户端 访问服务器A ,服务器A 为代理服务器 ,将客户服务再转发到服务器B
  2. 作用:缓存,将服务器的响应缓存在自己的内存中,减少服务器压力;
  3. 负载均衡:将用户请求分配给多个服务器;访问控制

  4. 正向代理:在客户端 配置,配置完了再去访问具体服务,即代理服务器 代理了客户端 ,再去和目标服务器 进行交互
  5. 作用:提高访问速度,隐藏客户端真实IP地址
  6. 负载均衡:分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务
复制代码
nginx七层负载均衡调度算法(六种)
1、轮询(默认调度算法)
特点:每个请求按时间顺序逐一分配到不同的后端服务器处理。适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时使用。
  1. upstream backendserver {
  2. server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
  3. server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
  4. }
复制代码
2、加权轮询
特点:指定轮询几率,weight值(权重)和访问比例成正比,用户请求按权重比例分配。适用业务场景:用于后端服务器硬件性处理能力不平均的情形。
  1. upstream backendserver {
  2. server 192.168.0.14:80 weight=5 max_fails=2 fail_timeout=10s;
  3. server 192.168.0.15:80 weight=10 max_fails=2 fail_timeout=10s;
  4. }
复制代码
3、ip_hash(IP哈希)
特点:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session会话保持问题。适用业务场景:适用于需要账号登录的系统,会话连接保持的业务。
  1. upstream backendserver {
  2. ip_hash;
  3. server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
  4. server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
  5. }
复制代码
4、最少连接数 least_conn
特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。
适用业务场景:适用于客户端与后端服务器需要保持长连接的业务。
  1. upstream backendserver {
  2. least_conn; server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
  3. server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
  4. }
复制代码
5、响应时间 fair(需编译安装第三方模块 ngx_http_upstream_fair_module)
特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配。适用业务场景:对访问响应速度有一定要求的业务。
  1. upstream backendserver {
  2. fair;
  3. server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
  4. server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
  5. }
复制代码
6、url_hash(URL分配 )
(需编译安装第三方模块ngx_http_upstream_hash_module)
特点:按访问url的hash结果来分配请求,使同一个url访问到同一个后端服务器。
适用业务场景:适用于后端服务器为缓存服务器时比较有效。
  1. upstream backendserver {
  2. server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
  3. server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
  4. hash $request_uri;
  5. }
复制代码
动静分离:采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。
在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式,通过使用Nginx提高网站的响应速度,优化用户体验
二.Nginx和Apache的差异
Apache:同步多进程模型:一个连接对应一个进程(高稳定)
1.rewrite更强大(rewrite主要功能是实现统一资源定位符URL的跳转)2.模块多,基本想到的都可以找到3.少bug,更加稳定(nginx相对较多)4.PHP支持比较简单(nginx需要配合其他后端用)5.处理动态请求更有优势(nginx更适合静态与反向)
Nginx:异步非阻塞模型:多个连接(万级别)对应一个进程(高性能)
1.轻量级,采用C编写,占用更少的内存与资源2.抗并发/高并发,以epoll and kqueue 作为开发模型,负载能力高,高并发下能够保持                     低资源低消耗高性能(apache在PHP处理慢或前端压力很大时,容易出现进程数飙升                     从而拒绝服务)3.处理静态文件好,静态处理性能比apache高三倍以上4.设计高度模块化,编写模块相对简单5.配置简洁,正则配置更简单,且更改完可以使用 -t 测试(apache配置复杂,重启时发                     现出错,会很崩溃)6.作为负载均衡服务器,支持七层负载均衡,可以有效防止ddos攻击7.本身是一个反向代理服务器,也可以作为邮件代理服务器使用8.支持热部署,支持在线升级
三.安装Nginx
  • 编译安装关闭防火墙,将安装nginx所需软件包传到/opt目录下nginx安装官网:https://nginx.org/en/download.html
    1. nginx安装官网:https://nginx.org/en/download.html

    2. systemctl stop firewalld
    3. systemctl disable firewalld
    4. setenforce 0

    5. # 将压缩包传入到/opt目录下
    6. cd /opt
    7. wget http://nginx.org/download/nginx-1.18.0.tar.gz
    复制代码
    011.jpg 安装依赖包#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些安装的开发包,以便提供相应的库和头文件yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel 02.jpg
  • 创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)useradd -M -s /sbin/nologin nginx 03.jpg
    1. 编译安装nginxtar xf nginx-1.18.0.tar.gz
    2. cd nginx-1.18.0/
    3. mkdir /apps/nginx -p

    4. ./configure --prefix=/apps/nginx \
    5. --user=nginx \
    6. --group=nginx \
    7. --with-http_ssl_module \
    8. --with-http_v2_module \
    9. --with-http_realip_module \
    10. --with-http_stub_status_module \
    11. --with-http_gzip_static_module \
    12. --with-pcre \
    13. --with-stream \
    14. --with-stream_ssl_module \
    15. --with-stream_realip_module

    16. make -j2 && make install
    17. chown -R nginx.nginx /apps/nginx
    复制代码
    04.jpg 05.jpg 06.jpg
    创建软连接后直接 nginx启动ln -s /apps/nginx/sbin/nginx /usr/sbin/


    088.jpg 创建Nginx 自启动文件vim /usr/lib/systemd/system/nginx.service[Unit]Description=nginx - high performance web serverDocumentation=http://nginx.org/en/docs/After=network-online.target remote-fs.target nss-lookup.targetWants=network-online.target[Service]Type=forkingPIDFile=/apps/nginx/logs/nginx.pidExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPID[Install]WantedBy=multi-user.target 0888777.jpg 重新加载配置、设置开机自启并开启服务systemctl daemon-reload          #重新加载配置systemctl enable --now nginx     #开机自启并立即启动systemctl status nginx.service   #查看服务状态(验证 099.jpg

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程 ( 皖ICP备15000319号-1 )

GMT+8, 2025-7-11 02:27

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表