Nginx的快速入门

目录

前言

一、Nginx的简介

1. 什么是Nginx?

2. Nginx能解决什么问题?

3. Nginx的使用场景有哪些?

4. Nginx的优点和缺点

二、Nginx的下载安装

1. Windows下安装Nginx

1.1 下载nginx

1.2 启动nginx

1.3 检查nginx是否启动成功

1.4 配置监听

1.5 关闭nginx

2. Linux下安装Nginx

2.1 安装gcc

2.2 PCRE pcre-devel 安装

2.3 zlib 安装

2.4 OpenSSL 安装

2.5 下载安装包

2.6 解压

2.7 配置

2.8 Nginx常用命令

2.9 检查启动结果 

2.10 问题解决

三、Nginx的使用

1. Nginx核心配置详解

2. 使用Nginx反向代理Apache、Tomcat

四、总结


前言

        公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。 但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。
        于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。 我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不 同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。所以我们使用了Nginx。
  • 传统的web项目【war包】
  • springboot项目【jar包】

一、Nginx的简介

1. 什么是Nginx?

        Nginx(发音为"engine-x")是一个高性能的开源Web服务器和反向代理服务器。它是由Igor Sysoev开发的,最初发布于2004年。Nginx的设计重点是高性能、高并发、低内存消耗以及稳定性,因此在构建高流量和高可用性的网络应用和网站时非常流行。

2. Nginx能解决什么问题?

  • 高性能Web服务器:Nginx是一个快速的Web服务器,可以处理大量并发请求,同时占用较少的内存资源。它是为了提供Web内容而设计的,可以有效分发HTTP请求并返回响应。

  • 反向代理服务器:Nginx可以充当反向代理服务器,用于负载均衡、缓存、SSL终端、安全策略、减轻应用服务器负载等。它允许多个后端服务器共享负载,从而提高可用性和性能。

  • 静态资源服务器:Nginx可以用于提供静态资源(如图片、CSS、JavaScript文件)的快速交付,减轻Web应用服务器的负担。

  • 缓存代理:Nginx支持缓存,可以缓存Web页面内容,加快响应速度,并减少对后端服务器的请求。

  • URL重写和重定向:Nginx提供了强大的URL重写和重定向功能,可以优化URL结构并改善SEO。

3. Nginx的使用场景有哪些?

  • Web服务器:用于提供静态和动态内容的快速Web服务器。

  • 反向代理:用于负载均衡多个应用服务器,提高性能和可用性。

  • 缓存代理:用于缓存Web页面内容,减轻应用服务器负载。

  • SSL终端:用于SSL/TLS加密和解密,保护数据传输。

  • URL重写和重定向:用于URL的优化和管理。

  • 安全策略:用于防止DDoS攻击、防火墙、反爬虫等安全策略。

  • WebSocket支持:用于实现WebSocket协议,支持实时通信。

  • 流媒体服务:用于流媒体传输和代理。

  • 其他(略)

4. Nginx的优点和缺点

优点

  • 高性能:Nginx以其卓越的性能而闻名,能够处理大量并发连接和高流量。
  • 低内存消耗:相对于其他Web服务器,Nginx占用更少的内存资源。
  • 可扩展性:Nginx支持模块化架构,可以通过添加模块来扩展功能。
  • 负载均衡:Nginx支持多种负载均衡策略,可用于多个应用服务器的负载均衡。
  • 反向代理:Nginx可以用作反向代理服务器,提高了应用的安全性和性能。
  • 灵活的配置:Nginx的配置文件采用简洁的语法,易于理解和配置。

缺点

  • 复杂性:Nginx的高级配置需要一定的学习和经验,初学者可能会感到复杂。
  • 不支持直接处理动态内容:虽然Nginx能够处理FastCGI应用,但它不是一个完整的应用服务器,不能直接运行动态脚本。
  • 不支持处理数据库查询:Nginx不支持直接处理数据库查询,因此通常需要与应用服务器(如PHP-FPM)一起使用。

二、Nginx的下载安装

1. Windows下安装Nginx

1.1 下载nginx

http://nginx.org/en/download.html 下载稳定版本。以nginx/Windows-1.16.1为例,直接下载 nginx-1.16.1.zip,下载后解压。

1.2 启动nginx

有很多种方法启动nginx
  • 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。
  • 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可。

1.3 检查nginx是否启动成功

        直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

1.4 配置监听

        Nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用 可以修改为未被占用的端口即可。 当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

1.5 关闭nginx

        如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭 nginx。
  • 输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
  • 使用taskkill taskkill /f /t /im nginx.exe

注:

  • taskkill是用来终止进程的,
  • /f是强制终止 .
  • /t终止指定的进程和任何由此启动的子进程。
  • /im示指定的进程名称

2. Linux下安装Nginx

2.1 安装gcc

        安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc - c ++

2.2 PCRE pcre-devel 安装

        PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install - y pcre pcre - devel

2.3 zlib 安装

        zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install - y zlib zlib - devel

2.4 OpenSSL 安装

        OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥 和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL库。
yum install - y openssl openssl - devel

2.5 下载安装包

        手动下载.tar.gz安装包,地址: https://nginx.org/en/download.html。下 载完成后将其上传到linux系统中,如下:

2.6 解压

        使用命令进行解压:

tar - zxvf nginx-1.25.2.tar.gz
        解压完后可以将其移动到/usr/local/目录下,如下:

2.7 配置

使用默认配置,在nginx根目录下执行
. / configure
make
make install

2.8 Nginx常用命令

1 cd / usr / local / nginx / sbin /
2 . / nginx 启动
3 . / nginx - s stop 停止
4 . / nginx - s quit 安全退出
5 . / nginx - s reload 重新加载配置文件
6 ps aux | grep nginx 查看 nginx 进程

2.9 检查启动结果 

        访问服务器ip:80,出现如下界面:

2.10 问题解决

1. 如果出现访问不了的问题,需要检查服务器端口是否开启。

1 # 开启
2 service firewalld start
3 # 重启
4 service firewalld restart
5 # 关闭
6 service firewalld stop
7 # 查看防火墙规则
8 firewall - cmd -- list - all
9 # 查询端口是否开放
10 firewall - cmd -- query - port = 8080 / tcp
11 # 开放 80 端口
12 firewall - cmd -- permanent -- add - port = 80 / tcp
13 # 移除端口
14 firewall - cmd -- permanent -- remove - port = 8080 / tcp
15 # 重启防火墙 ( 修改配置后要重启防火墙 )
16 firewall - cmd -- reload
17 # 参数解释
18 1 firwall - cmd :是 Linux 提供的操作 firewall 的一个工具;
19 2 -- permanent :表示设置为持久;
20 3 -- add - port :标识添加的端口;

2.  如果是使用阿里云或者其他云服务器,记得去安全组中开启对应的端口。   

三、Nginx的使用

1. Nginx核心配置详解

user  nginx; # 设置Nginx运行的用户
worker_processes  2; # 指定Nginx worker进程的数量

error_log  /var/log/nginx/error.log warn; # 错误日志的路径和级别
pid        /var/run/nginx.pid; # 存储Nginx主进程的PID文件

events {
    worker_connections  1024; # 每个worker进程可以处理的最大连接数
}

http {
    include       /etc/nginx/mime.types; # 包含MIME类型定义文件
    default_type  application/octet-stream; # 默认MIME类型

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main; # 访问日志的路径和日志格式

    sendfile        on; # 启用sendfile,提高文件传输性能
    tcp_nopush     on; # 启用TCP NOPUSH选项
    keepalive_timeout  65; # 客户端空闲连接超时时间
    client_max_body_size 20M; # 允许客户端上传的最大请求体大小

    server {
        listen       80; # 监听的端口号
        server_name  example.com; # 服务器的域名或IP地址

        location / {
            root   /usr/share/nginx/html; # 静态文件根目录
            index  index.html index.htm; # 默认首页文件
        }

        error_page   500 502 503 504  /50x.html; # 错误页面配置

        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

注:其中我们主要需要修改的是server中的配置。

2. 使用Nginx反向代理Apache、Tomcat

        系统环境:阿里云服务器(Alibaba Cloud Liunx 3)

        远程连接工具:FinalShell

        打开nginx.conf配置文件进行配置。可以通过vim命令打开,也可以通过工具直接打开并修改文件。

找到需要配置的地方,然后进行修改,如下:

        访问服务器ip:80,http默认是80端口,可以省略。默认跳转的是apache的地址(这里将apache的端口号修改为了81,因为其默认端口80,如果同时使用80会产生冲突),访问ip/music/跳转的是tomcat服务器下的某个项目,其中music是tomcat中一个项目的上下文路径。

        如果要配置负载均衡,可以在apache-servers{}中添加其他的服务器ip和端口号,默认是采用轮询的方式,可以根据需要和服务器性能配置加权轮询。

拓展:配置apache的环境可以参考阿里云的开发手册(阿里云部署LAMP环境

四、总结

        总体来说,Nginx是一个功能强大、高性能的Web服务器和反向代理服务器,适用于多种应用场景。其优点包括高性能、低内存消耗、可扩展性和负载均衡,但需要一定的学习和经验来充分发挥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值