手表交易网站,建设网站工具,河南第一火电建设公司网站,流行的企业网站推广Linux下Nginx的安装与使用
博客#xff1a; www.lstar.icu
开源地址 Gitee 地址#xff1a; https://gitee.com/lxwise/iris-blog_parent Github 地址#xff1a; https://github.com/lxwise/iris-blog_parent
序言
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子…Linux下Nginx的安装与使用
博客 www.lstar.icu
开源地址 Gitee 地址 https://gitee.com/lxwise/iris-blog_parent Github 地址 https://github.com/lxwise/iris-blog_parent
序言
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件IMAP/POP3代理服务器在BSD-like 协议下发行。其特点是占有内存少并发能力强事实上nginx的并发能力在同类型的网页服务器中表现较好中国大陆使用nginx网站用户有百度、京东、新浪、网易、腾讯、淘宝等。
优势
Nginx 可以在大多数 Unix Linux OS 上编译运行并有 Windows 移植版。 Nginx 的1.20.0稳定版已经于2021年4月20日发布一般情况下对于新建站点建议使用最新稳定版作为生产版本已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。 Nginx 是一个很强大的高性能Web和反向代理服务它具有很多非常优越的特性
在连接高并发的情况下Nginx是Apache服务不错的替代品Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应。Nginx作为负载均衡服务Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。处理静态文件索引文件以及自动索引打开文件描述符缓冲。无缓存的反向代理加速简单的负载均衡和容错。FastCGI简单的负载均衡和容错。模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI则这项处理可以并行运行而不需要相互等待。支持 SSL 和 TLSSNI。Nginx代码完全用C语言从头写成已经移植到许多体系结构和操作系统包括Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库并且除了zlib、PCRE和OpenSSL之外标准模块只使用系统C库函数。而且如果不需要或者考虑到潜在的授权冲突可以不使用这些第三方库。代理服务器。作为邮件代理服务Nginx 同时也是一个非常优秀的邮件代理服务最早开发这个产品的目的之一也是作为邮件代理服务器Last.fm 描述了成功并且美妙的使用经验。Nginx 是一个安装非常的简单、配置文件非常简洁还能够支持perl语法、Bug非常少的服务。Nginx 启动特别容易并且几乎可以做到7*24不间断运行即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
Nginx安装
下载
1. Nginx的发行版本
Nginx发行版本介绍Nginx 开源版https://nginx.org/赤裸裸的Web服务器、反向代理、负载均衡功能少开发难度大Nginx Plus 商业版https://www.nginx.com/什么都有全家桶付费版本OpenRestyhttps://openresty.org/cn/是一个基于 Nginx 与 Lua 的高性能 Web 平台其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。Tenginehttps://tengine.taobao.org/淘宝二开的Nginx。它在Nginx的基础上针对大访问量网站的需求添加了很多高级功能和特性。
2. 下载nginx安装包
通过网页下载上传到服务器
下载地址: https://nginx.org/en/download.html
直接通过wget下载
mkdir /opt/nginx
cd /opt/nginx
#下载nginx安装包
wget -c http://nginx.org/download/nginx-1.22.1.tar.gzwget下载链接来自于官网的下载页面点击下载复制下载链接得来 注意如果没有wget命令需要先安装centos版本命令yum install -y wget 安装
1. 安装Nginx相关依赖
解压 nginx 源码包进入源码包目录执行预编译命令
nginx 的安装目录默认是 /usr/local/nginx--prefix 配置项缺省时默认就是该目录但不建议省略该参数选项
#解压
tar -zxf nginx-1.22.1.tar.gz
#进入目录
cd nginx-1.22.1
#编译
./configure --prefix/usr/local/nginx当预编译出现以下报错时表示没有 gcc 编译器使用 yum 安装即可
nginx 是使用 c 语言编写的程序因此想要运行 nginx 就需要安装一个编译工具。gcc 就是一个开源的编译器集合用于处理各种各样的语言其中就包含了 c 语言运行以下命令安装即可:
安装gcc
yum install -y gcc安装perl库
yum install -y pcre pcre-devel安装zlib库
yum install -y zlib zlib-devel2. 编译安装
#基本编译
./configure --prefix/usr/local/nginx#带模块编译
./configure --prefix/usr/local/nginx --sbin-path/usr/local/nginx/sbin/nginx --conf-path/usr/local/nginx/conf/nginx.conf --error-log-path/usr/local/nginx/logs/error.log --http-log-path/usr/local/nginx/logs/access.log --pid-path/var/run/nginx.pid --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_v2_module --with-http_realip_module --with-stream --with-stream_ssl_module# make命令的功能是编译内核或源码文件。
make
# 安装已经编译好的程序。复制文件树中到文件到指定的位置
make install
# 卸载已经编译好的程序。暂不执行
make uninstall一些常用的模块如http_stub_status_module、http_ssl_module、http_gzip_static_module、http_v2_module、http_realip_module以及stream和stream_ssl_module。这些模块已经足够支持大部分常见的功能需求包括SSL、gzip、HTTP/2、真实IP处理等。 但如果你有特定的需求可以考虑添加以下模块 http_geoip_module或http_geoip2_module用于根据IP地址获取地理位置信息。http_auth_request_module支持子请求来实现复杂的认证机制。http_secure_link_module可以用于安全的文件下载链接。http_sub_module用于对响应内容进行文本替换。http_headers_more_module第三方模块允许设置和清除HTTP请求/响应头。 以下是关于编译安装的基础知识 configure文件这个文件是一个Shell脚本用于检测系统环境、配置编译选项以及生成相应的Makefile文件。 Makefile文件是软件工程中的一种自动化构建工具文件主要用于Unix-like操作系统如Linux、BSD等和一些集成开发环境IDEs用于管理和自动化编译、链接程序的过程。在Makefile中开发者定义了一系列规则来指导make工具如何编译和链接源代码文件以生成最终的目标文件通常是可执行文件或库文件。 Makefile的核心功能包括 依赖关系声明源代码文件之间的依赖关系当某个源文件或其依赖的头文件发生变化时仅重新编译受影响的部分而不是整个项目。规则定义如何从源文件生成目标文件的规则包括编译器选项、编译命令、链接命令等。自动化通过比较文件的修改时间和目标文件的存在与否make能自动判断哪些目标需要更新并执行相应的命令。目标可以定义多种目标如编译调试版、发布版或者执行测试、清理等任务。变量和函数Makefile支持变量和函数可以用来简化命令行参数和路径名的管理。模式规则允许定义通用的转换规则适用于多个源文件到目标文件的转换情况。 在实际使用中程序员通过编写Makefile来组织和控制整个项目的构建流程只需简单地运行make命令make工具就会读取Makefile文件分析依赖关系并执行必要的编译和链接步骤来生成最终的产品。 启动
进入到nginx安装目录下
cd /usr/local/nginx/sbin启动命令
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置查询nginx是否启动
ps -ef | grep nginx访问nginx页面
在浏览器中输入 ip 端口号访问端口默认80
这样就算安装成功了 如果浏览器访问不通请检查是否开启防火墙限制将防火墙关闭或将端口加入到防火墙白名单中这里nginx的默认端口为80,如果是与服务器,还要去安全组开通对应的对口
关闭防火墙 :
#查看已放行的端口
firewall-cmd --list-all
#将80端口加入到防火墙放行白名单中并重载防火墙
firewall-cmd --add-port80/tcp --permanent
firewall-cmd --reload禁止防火墙开机启动
systemctl disable firewalld.service安装成系统服务
#创建服务脚本
vi /usr/lib/systemd/system/nginx.service服务脚本内容 :
[Unit]
Descriptionnginx - web server
Afternetwork.target remote-fs.target nss-lookup.target
[Service]
Typeforking
PIDFile/usr/local/nginx/logs/nginx.pid
ExecStartPre/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload/usr/local/nginx/sbin/nginx -s reload
ExecStop/usr/local/nginx/sbin/nginx -s stop
ExecQuit/usr/local/nginx/sbin/nginx -s quit
PrivateTmptrue
[Install]
WantedBymulti-user.target重新加载系统服务
systemctl daemon-reload启动服务
systemctl start nginx.service查看服务是否自启动
systemctl list-unit-files|grep nginx.service如不是enabled可以运行如下命令设置自启动
systemctl enable nginx.service如果希望不进行自启动运行如下命令设置
systemctl disable nginx.serviceNginx简介
1.目录结构
进入Nginx的主目录我们可以看到这些文件夹
#进入nginx目录
cd /usr/local/nginx/client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp其中这几个文件夹在刚安装后是没有的主要用来存放运行过程中的临时文件
client_body_temp fastcgi_temp proxy_temp scgi_tempconf 用来存放配置文件相关html 用来存放静态文件的默认目录 html、css等sbin nginx的主程序logs
用来存放日志
2.运行原理 3.配置文件说明
#user nobody;#运行nginx的默认账号
#nginx进程数建议设置为等于CPU总核心数。
worker_processes 1;#事件区块开始
events {#单个进程最大链接数最大连接数连接数*进程数#根据硬件调整与前面工作进程配合起来用尽量大但别把CPU跑到100%就行每个进程允许的最多连接数理论上为每台nginx服务器的最大连接数worker_connections 1024;
}#设定http服务器利用它的反向代理功能提供负载均衡支持
http {#include:导入外部文件mime.types,将所有types提取为文件然后导入到nginx配置文件中。include mime.types;#默认文件类型default_type application/octet-stream;#开启高效文件传输模式sendfile指令指定nginx是否调用sendfile函数来输出文件对于普通应用设置为on如果用来进行下载等应用磁盘IO重负载应用可设置为off以平衡磁盘与网络I/O处理速度降低系统的负载注意如果图片显示不正常把这个改成off#sendfile指令指定nginx是否调用sendfile函数zero copy方式来输出文件对于普通应用必须设为on,如果用来进行下载等应用磁盘IO重负载应用可设置为off以平衡磁盘与网络IO处理速度降低系统uptimesendfile on;#长连接超时事件单位是秒keepalive_timeout 65;#第一个server区块开始表示一个独立的虚拟主机站点server {#提供服务的端口默认80listen 80;#提供服务的域名主机名server_name localhost;#对 “/” 启动反向代理第一个location区块开始location / {root html; #服务默认启动目录,可以改成指定的目录位置index index.html index.htm; #默认的首页文件多个用空格分开}#错误页面路由error_page 500 502 503 504 /50x.html; # 出现对应的http状态码是使用50x.html回应客户location /50x.html { # location区块开始访问50x.htmlroot html; # 指定对应的站点目录为html}}
}4.nginx.conf分块理解 **全局区域**从配置文件开始到events块之间的内容主要会设置一些影响nginx服务器整体运行的配置指令主要包括配置运行nginx服务器的用户组、允许生成的worker process数进程PID存放路径、日志存放路径和类型以及配置文件的引入等。必须上面的第一行配置
#允许的work process数
worker_processes 1;
# 引入其他配置文件,其他配置文件可以放在conf目录下的test文件夹下没有自己创建一个
include test/test.conf这是Nginx服务器并发处理服务的关键配置worker_processes值越大可以支持的并发处理也越多但是会受硬件、软件的设备的制约。
**events区域**events块涉及的指令主要影响Nginx服务器与用户的网络连接常用的设置包括是否开启对多worker_process下的网络连接进行序列化是否允许同时接收多个网络连接选取哪种事件驱动模型来处理连接请求每个work process可以同时支持的最大链接数等。 worker_connections 1024;样例中就表示每个work process支持的最大连接数为1024这部分的配置对Nginx的性能影响较大在实际中应该灵活配置。 **http区域块**这块是Nginx服务器配置中最频繁的部分代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。这里http块包含http全局块、server 块 **http全局块**http全局块配置的指定包括文件引入、MIME-TYPE定义、日志自定义、连接超时事件、单链接请求数上限等。 server块 这块和虚拟主机有密切关系虚拟主机从用户角度看和一台独立的硬件主机是完全一样的该技术的产生是为了节省互联网服务器硬件成本。每个http块可以包括多个server块而每个server块就相当于一个虚拟主机。每个server块也分为server全局块以及可以同时包含多个location块。 全局server块最常见的配置就是本虚拟机主机的监听配置和本虚拟机的名称或IP配置。**location块**一个server块可以配置多个location块。这块的主要作用就是基于nginx服务器接收到的请求字符串例如server_name/uri-string,对虚拟主机名称也可以是IP别名之外的字符串例如前面的/uri-string进行匹配对特定的请求进行处理。地址定向、数据缓存和应答控制等共鞥还有许多第三方模块的配置也可以在这里进行。
Nginx基本使用
拓展Nginx常用命令
# 强制停止nginx命令
./nginx -s stop# 优雅停止nginx命令等最后一次交互执行完毕再停止
./nginx -s quit# 重启nginx命令
./nginx -s reload# 检查nginx配置文件是否有问题 -c参数指定了要加载的Nginx配置文件路径
./nginx -t./nginx -t -c /usr/local/nginx/conf/nginx.conf
# 查看nginx版本信息
./nginx -v# 查看nginx详细版本信息,注意是大写V
./nginx -V# 重新打开日志文件
./nginx -s reopen