首页 > 系统相关 >Nginx网络服务

Nginx网络服务

时间:2024-06-02 19:03:53浏览次数:30  
标签:网络服务 nginx -- apps Nginx root localhost

一.nginx介绍

Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它在性能、稳定性、丰富的功能和低系统资源消耗等方面表现优异,因此被广泛应用于互联网的各个领域。

功能介绍:

  1. HTTP 服务器功能:Nginx 最常见的用途之一是作为 HTTP 服务器。它可以处理静态文件、索引文件,也可以作为反向代理服务器来处理动态请求,比如将请求转发给应用服务器(如 PHP、Python 或 Node.js 应用)处理。

  2. 反向代理:Nginx 可以作为反向代理服务器,将客户端的请求转发给后端的应用服务器。这对于负载均衡、缓存和安全性都非常有用。

  3. 负载均衡:Nginx 可以通过配置多个后端服务器来进行负载均衡,将请求分发到不同的服务器上,从而提高系统的整体性能和可用性。

  4. 静态文件服务:Nginx 可以快速地提供静态文件,例如 HTML、CSS、JavaScript 和图像等,而无需将请求传递给应用服务器。

  5. 安全性:Nginx 提供了各种安全功能,包括 SSL/TLS 支持、访问控制、防止恶意请求和 DDOS 攻击的能力等。

  6. 易于扩展和定制:Nginx 的模块化架构使得它非常灵活,可以通过添加第三方模块或编写自定义模块来扩展其功能。

  7. 高性能和低资源消耗:Nginx 的事件驱动架构和异步处理模型使其在处理大量并发连接时表现出色,同时具有较低的内存和 CPU 使用率。

  8. 日志记录:Nginx 提供了详细的访问日志和错误日志,可以帮助管理员监控服务器的运行状态和诊断问题。

二.nginx与apache差异

  1. 架构设计

    • Apache 是基于多线程模型的传统 Web 服务器,每个客户端连接都会创建一个新的线程或进程来处理请求。
    • Nginx 使用事件驱动的架构,采用单线程和异步非阻塞的处理方式,可以同时处理成千上万个连接而不会创建大量的额外进程或线程。
  2. 性能

    • Nginx 在处理高并发请求时表现更加出色,由于其事件驱动和异步处理模型,能够以更少的资源处理更多的并发连接。
    • Apache 在处理静态内容时表现良好,但在处理大量并发请求时可能会受限于线程或进程的创建和管理开销。
  3. 资源消耗

    • Nginx 的内存消耗通常比 Apache 更低,因为它使用更少的进程和线程来处理请求。
    • Apache 在高负载情况下可能会消耗更多的内存和 CPU 资源,因为每个连接都需要一个额外的线程或进程。
  4. 配置语言

    • Apache 使用基于文本的配置语言,通常为 Apache 的配置文件(如 httpd.conf)。
    • Nginx 使用一种更加简洁和易于理解的配置语言,其配置文件结构清晰,语法简洁。
  5. 模块化支持

    • Apache 拥有丰富的模块生态系统,可以通过加载模块来扩展其功能。
    • Nginx 也支持模块化扩展,但其模块化架构相对较新,模块数量可能不及 Apache。
  6. 适用场景

    • Nginx 通常在需要处理大量静态内容或高并发请求的场景下表现更好,比如作为反向代理、负载均衡器或静态文件服务器。
    • Apache 在传统的 Web 服务环境中仍然表现良好,特别是对于需要使用 Apache 特性或模块的项目而言。

总的来说,Nginx 更适合处理大量并发请求和静态内容,而 Apache 则更适合传统的 Web 服务环境和需要丰富模块支持的场景。在选择使用哪种 Web 服务器时,需要根据具体的需求和场景进行权衡和选择。

三.编译安装 nginx服务 

nginx官网:nginx: download

源码包内的文件:
- contrib:vim 格式文件,修改nginx配置文件的格式,高亮                                                                                                                                                                                                                        cp -r /opt/nginx-1.18.0/contrib/vim/*    /usr/share/vim/vimfiles/  
- conf:配置文件
- man:man帮助   man   man/nginx.8    不加路径看不了  nginx.8 文件
- src:源码包  点c  点h 结尾的文件                                                                                                                                                                                                                                                                    find src -type f |xargs cat |wc -l  193678

1.关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2.安装依赖包

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

3.新建nginx用户方便管理

useradd -M -s /sbin/nologin nginx

4.将官网上下载的安装包传输到/opt目录下,并解压

5.切换到编译安装目录,创建/app/nginx文件夹,并编译安装

cd nginx-1.18.0/

[root@localhost nginx-1.18.0]# mkdir /apps/nginx -p

[root@localhost nginx-1.18.0]# ./configure --help   
#查看帮助模块

[root@localhost nginx-1.18.0]# ./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@localhost nginx-1.18.0]# make -j2   
[root@localhost nginx-1.18.0]# make install

6.建立软链接

ln -s /apps/nginx/sbin/nginx /usr/sbin/
#创建软连接后直接 nginx启动

7.创建nginx自启动文件

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target
###如果需要修改pid文件可以执行以下操作#################
mkdir /apps/nginx/run/
#创建目录
vim /apps/nginx/conf/nginx.conf
#修改配置文件
pid   /apps/nginx/run/nginx.pid;
#找到 pid的位置修改  
#######################################################

systemctl daemon-reload 
#重新加载配置
systemctl enable --now nginx
#开机自启并立即启动    如果卡主是应为logs下有 nginx.pid  文件  删除即可

chown -R nginx.nginx /apps/nginx
#修改权限

四.nginx相关命令

nginx -h 命令查看选项

命令说明
nginx -v查看Nginx版本信息
nginx -V查看Nginx编译配置参数
nginx -t测试Nginx配置文件语法是否正确
nginx -s reload平滑重启Nginx(不中断已有连接)
nginx -T测试Nginx配置文件的语法并显示完整的配置信息
nginx -s   stop立即关闭nginx
nginx -s   quit优雅退出   不影响业务的状态下退出
nginx -s  reopen 分割日志
nginx -g指定配置 不已配置文件中的为准

nginx -s 命令后面通常需要跟随一个指令来告诉 Nginx 主进程执行相应的操作。

  • stop: 立即停止 Nginx 服务器。
  • quit: 安全地退出 Nginx 服务器,允许当前处理的连接完成后再退出。
  • reload: 重新加载 Nginx 配置文件,不中断正在进行的连接。
  • reopen: 重新打开 Nginx 的日志文件。

示例:

(1)nginx  -v/V    #查看Nginx版本信息/#查看Nginx编译配置参数

(2)nginx -s   quit  #优雅退出   不影响业务的状态下退出

五.升级nginx

基本步骤:

  1. 将旧Nginx文件换成新Nginx文件(注意备份)

  2. 向master进程发送USR2信号

  3. master进程修改pid文件名,加后缀.oldbin

  4. master进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务

  5. 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止,并删除Nginx.pid.oldbin文件

  6. 向旧master进程发送QUIT信号,关闭老master

  7. 如果发现升级有问题,可以回滚向老master发送HUP,向新master发送QUIT

实际操作

1.查看是否开启nginx服务

[root@localhost ~]#ps aux |grep nginx

2.进入配置文件开启两核

[root@localhost ~]#vim /apps/nginx/conf/nginx.conf
#开启 两核
#user  nobody;
worker_processes  2;
#worker_processes  1 原来是1核
[root@localhost ~]#nginx -s reload
#重新加载配置文件
[root@localhost ~]#ps aux |grep nginx

3.官网下载nginx-1.20.2包,并传输到/usr/local/src目录下,解压包并切换到编译目录下

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# rz -E
rz waiting to receive.
[root@localhost src]# tar xf nginx-1.20.2.tar.gz
[root@localhost src]# ls
nginx-1.20.2  nginx-1.20.2.tar.gz
[root@localhost src]# cd nginx-1.20.2/
[root@localhost nginx-1.20.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src

4.重新编译安装

./configure  安装参数基本一致   ,可以使用 nginx  -V  查看参数

./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
#重新编译
[root@localhost nginx-1.20.2]#make  -j2
###########注意不要执行  make install

5.切换到nginx-1.20.2下的objs  ,objs中有新版本的nginx  运行后查看版本

[root@localhost nginx-1.20.2]# cd objs
[root@localhost objs]# ls
autoconf.err  Makefile  nginx  nginx.8  ngx_auto_config.h  ngx_auto_headers.h  ngx_modules.c  ngx_modules.o  src
[root@localhost objs]# systemctl start  nginx
[root@localhost objs]# cd ..
[root@localhost nginx-1.20.2]# objs/nginx  -v
nginx version: nginx/1.20.2

6.将低版本的nginx主程序改名,将新版本的nginx拷贝进去

[root@localhost nginx-1.20.2]#mv /apps/nginx/sbin/nginx   /apps/nginx/sbin/nginx.bak
#将低版本的nginx主程序改名

[root@localhost nginx-1.20.2]#cp objs/nginx /apps/nginx/sbin/
#将新版本 拷入进去

标签:网络服务,nginx,--,apps,Nginx,root,localhost
From: https://blog.csdn.net/weixin_56770318/article/details/139352524

相关文章

  • Nginx网站服务
    目录一、Nginx服务基础二、Nginx访问控制三、Nginx虚拟主机四、编译安装Nginx服务1.关闭防火墙,将安装nginx所需软件包传到/opt目录下2.安装依赖包3.创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)4.编译......
  • Docker环境下部署Tomcat、Nginx
    docker部署常见应用-Tomcat&Nginx为了简便先禁用防火墙systemctlstopfirewalld部署基本流程搜索镜像——拉取镜像——创建专用目录——运行容器——测试部署Tomcat1.搜索镜像dockersearchtomcat2.拉取镜像dockerpulltomcat3.创建tomcat专用目录#我......
  • Nginx网站服务
    关于NginxNginx是一款高性能、轻量级web服务软件Nginx是一个轻量级/高性能的反向代理Web服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、......
  • Nginx 实战-04-nginx 不同的地址访问不同的服务
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • 如何使用 Apache 和 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向,或者URL重定向,是一种将一个域名或地址指向另一个的技术。重定向有许多用途,也有几种不同的重定向方式需要考虑。当一个站点需要将请求一个地址的人重定向......
  • 如何使用 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。临时重......
  • 如何使用 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。临时重......
  • 【代码片段】使用docker部署nginx 并通过nginx设置密码访问控制
    使用docker部署nginx服务docker-compose.ymlversion:'3'services:web:image:nginxvolumes:-./nginx.conf:/etc/nginx/nginx.confrestart:alwaysports:-"80:80"-"443:443"environment:......
  • 如何在nginx配置静态资源
    1#指定Nginx使用的工作进程数,这里设置为1,生产环境中应根据CPU核心数调整以提高性能。2worker_processes1;34events{5#设置每个工作进程可以同时处理的连接数,这里是1024。6worker_connections1024;7}89http{10#包含MIME类型文件......
  • nginx编译安装手把手教学
    编译安装nginx的第一步需要从nginx的官网找到nginx最新的稳定版本下面这是官方网站的资源下载地址https://nginx.org/en/download.html选中稳定版本点击右键——选择复制链接在终端内使用wget指令+官网下载地址,将nginx下载使用wget指令下载wgethttps://nginx.org/......