nginx-前端必会-项目部署-精简通用篇

2024-11-25
23278 分钟
...

这篇文章是关于 Nginx 的介绍,包括其在项目部署中的作用,如反向代理、负载均衡等。还介绍了 Nginx 的特点、下载安装、常用命令、实际应用中的配置,如设置不同端口和文件夹,解决跨域、缓存、https 等问题,最后给出了一个全面的配置示例,并总结了带小白学习 Nginx 的主要内容。

关联问题: 如何优化nginx配置 nginx能否处理高并发 怎样解决nginx报错

前言

最近在公司部署项目时遇上了一点关于nginx的问题,于是就想着写一篇关于nginx的文章...

主要给小白朋友分享,nginx是什么,nginx有什么用,最后到nginx的实际应用,项目部署。

nginx

公司项目刚刚上线,用户量少访问量不大,并发量低,一个jar包启动应用就能够解决问题了。但是随着项目的不断扩大,用户体量大增加,一台服务器可能就无法满足我们的需求了(当初是一个人用一个服务器,现在是多人用一个服务器,时间长了服务器都要红温)。

于是乎,我们就会想着增加服务器,那么我们多个项目就启动在多个服务器上面,用户需要访问,就需要做一个代理服务器,通过代理请求服务器来做前后端之间的转发和请求包括跨域等等问题。

那么到这就不得不说一下nginx的反向代理了,正向代理指的其实就是比如我们通过VPN去请求xxx,这里就是因为用到了其他地方的代理服务器,这是一个从客户端到服务端的过程,然而反向代理其实就是,因为我们有多个服务器,最后都映射到了代理服务器身上,客户端最终访问的都是例如:baidu.com,但是事实上他底下是有多台服务器的。

既然他有多台服务器,每台服务器的性能,各种条件都是不同的,这里就要说到nginx的另一个能力---负载均衡,可以给不同的服务器增加不同的权重,能力更强的服务器可以增大他的负荷,减轻其他服务器的负荷

这就是大家常说的nginx:Nginx 是一个高性能的 HTTP反向代理服务器,它还支持 IMAP/POP3/SMTP 代理服务器。

nginx的特点:

  1. 高性能

    • 高并发连接处理能力:Nginx 使用异步事件驱动模型(如 epoll, kqueue 等),能够高效地处理大量并发连接。
    • 低资源消耗:与 Apache 相比,Nginx 在相同硬件环境下通常消耗更少的内存和其他系统资源。
  2. 稳定性

    • 运行稳定:在高负载情况下依然保持稳定运行,崩溃或错误的发生率较低。
    • 平滑升级:可以在不停止服务的情况下进行升级或配置更改。
  3. 丰富的功能集

    • 反向代理:可以作为反向代理服务器,将请求转发到后端服务器。
    • URL 重写:通过简单的配置即可实现复杂的 URL 重写规则。
    • 动态内容与静态内容分离:可以配置为只处理静态文件请求,而动态请求则交给后端应用服务器处理。
  4. 高度可配置性

    • 灵活的配置选项:可以根据需要定制各种配置选项,以适应不同的应用场景。
    • 容易管理:配置文件结构清晰,易于理解和修改。
  5. 负载均衡

    • 支持多种负载均衡算法,例如轮询、加权轮询、最少连接数等,可以帮助分散到多个后端服务器的流量。
  6. 缓存功能

    • 可用作HTTP缓存服务器,减少对后端数据库或应用服务器的压力。
  7. 安全性

    • 提供 SSL/TLS 加密支持,保障数据传输安全。
    • 可以设置访问控制、防火墙规则等来增强安全性。
  8. 模块化架构

    • 支持第三方模块扩展功能,比如 Nginx+Lua 使得开发者可以在 Nginx 中直接使用 Lua 脚本语言编写插件或处理逻辑。
  9. 日志与监控

    • 详细的访问和错误日志记录,便于故障排查和性能分析。
    • 支持实时监控和统计,方便管理员了解当前系统的状态。

nginx下载

nginx.org/ 大家自行下载,我下载的是一个稳定版本,以防万一。下载完毕之后大家自行解压即可(默认大家是windows系统),解压完毕之后,可以看到nginx.exe就是我们的启动文件,conf就是配置文件,nginx.config中可以看到server的listen监听端口为80,这意味着当我们访问了80端口就会被nginx拦截,首先启动nginx,可以直接双击nginx.exe也可以通过cmd命令行直接输入nginx.exe运行(推荐,因为这样不会关闭窗口,双击的话就是一闪而过了)

接下来我们浏览器访问localhost:80

启动成功。

nginx常用命令

停止:nginx.exe -s stop 安全退出:nginx.exe -s quit 重新加载配置文件:nginx.exe -s reload(常用)例如我们更改了端口 查看nginx进程:ps aux|grep nginx

实际应用

下载完毕后打开可以看到:

于是我们建立aa、bb两个文件夹,我们将index.html 分别放入aa和bb,这两个页面都打上自己的标记aa/bb

然后我们对nginx进行配置 nginx.conf

server {
       listen       8001;
       server_name  localhost;

       location / {
           root   html/aa;
           index  index.html index.htm;
       }
    }

    server {
       listen       8002;
       server_name  localhost;

       location / {
           root   html/bb;
           index  index.html index.htm;
       }
    }

如果没结束,记得reload

nginx.exe -s reload

接下来我们放一个项目进去,打包后放入html中

修改配置文件,然后reload

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html/dist;
            index  index.html index.htm;
        }

然后我们访问localhost,端口默认是80所以不用写,如果失败,可能是reload失败,再次reload就可

其他配置问题

Nginx的主配置文件(conf/nginx.conf)按以下结构组织:

  • 全局块 与Nginx运行相关的全局设置
  • events 与网络连接有关的设置
  • http 代理、缓存、日志、虚拟主机等的配置
  • server 虚拟主机的参数设置(一个http块可包含多个server块)
  • location 定义请求路由及页面处理方式

前端开发中经常会遇到跨域问题,nginx可以做代理轻松解决,事实上原理和cors一样,设置请求头

server {
    location /api {
        proxy_pass http:
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'Origin, Content-Type, Accept';
    }
}

缓存问题:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {
    location / {
        proxy_cache my_cache;
        proxy_pass http:
        add_header X-Cache-Status $upstream_cache_status;
    }
}

https提升安全性

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http:
    }
}

一个比较全面的配置

# 全局段配置
# ------------------------------

# 指定运行nginx的用户或用户组默认为nobody
#user administrator administrators;

# 设置工作进程数通常设置为等于CPU核心数
#worker_processes 2;

# 指定nginx进程的PID文件存放位置
#pid /nginx/pid/nginx.pid;

# 指定错误日志的存放路径和日志级别
error_log log/error.log debug;

# events段配置信息
# ------------------------------
events {
    # 设置网络连接序列化用于防止多个进程同时接受到新连接的情况这种情况称为"惊群"
    accept_mutex on;

    # 设置一个进程是否可以同时接受多个新连接
    multi_accept on;

    # 设置工作进程的最大连接数
    worker_connections  1024;
}

# http配置段用于配置HTTP服务器的参数
# ------------------------------
http {
    # 包含文件扩展名与MIME类型的映射
    include       mime.types;

    # 设置默认的MIME类型
    default_type  application/octet-stream;

    # 定义日志格式
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';

    # 指定访问日志的存放路径和使用的格式
    access_log log/access.log myFormat;

    # 允许使用sendfile方式传输文件
    sendfile on;

    # 限制每次调用sendfile传输的数据量
    sendfile_max_chunk 100k;

    # 设置连接的保持时间
    keepalive_timeout 65;

    # 定义一个上游服务器组
    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #此服务器为备份服务器
    }

    # 定义错误页面的重定向地址
    error_page 404 https:

    # 定义一个虚拟主机
    server {
        # 设置单个连接上的最大请求次数
        keepalive_requests 120;

        # 设置监听的端口和地址
        listen       4545;
        server_name  127.0.0.1;

        # 定义location块用于匹配特定的请求URI
        location  ~*^.+$ {
           # 设置请求的根目录
           #root path;

           # 设置默认页面
           #index vv.txt;

           # 将请求转发到上游服务器组
           proxy_pass  http:

           # 定义访问控制规则
           deny 127.0.0.1;
           allow 172.18.5.54;          
        } 
    }
}

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
nginx2026-01-06
Ubuntu Nginx配置文件与管理
1\. Nginx配置文件结构 配置文件位置 配置层次结构 2\. 常用配置示例 基础服务器配置 反向代理配置 HTTPS配置 (Let’s Encrypt证书) 3\. Ubuntu中Nginx配置管理流程 创建新站点配置 禁用站点 配置片段复用 (snippets) 4\. 配置文件验证与服务管理命令 配置测试 服务管理 5\. 常用调试命令 6\. 常见配置问题解决 配置后无法访问 1. 检查配置语法: 2. 检查防火墙设置: 3...
学习
nginx2025-06-07
Nginx配置介绍
一、Nginx配置介绍 是一个高性能的‌ 和反向代理服务器,以其轻量级、高并发能力而闻名。它的 配置文件通常位于 /etc/nginx/nginx.conf ,但具体位置可能会因安装方式和操作系统而异。Nginx的配置文件主要由以下几个部分组成: 1. 全局块:配置影响Nginx全局的指令,如运行Nginx服务器的用户组、Nginx进程PID存放路径、日志存放路径、配置文件引入、允许生成的worker process数等。 2. :配置...
学习
nginx2025-06-05
在 Ubuntu 上安装和配置 Nginx 的完整指南
Nginx 是一款高性能的开源 Web ,它可以用于反向代理、负载均衡、静态文件服务等。本指南将带您逐步完成在 Ubuntu 22.04 上安装和配置 Nginx 的过程。 步骤 1:更新软件包索引 在安装任何新软件之前,首先确保您的系统上的软件包索引是最新的。打开终端并运行以下命令: 步骤 2: 在 Ubuntu 22.04 上,可以通过 apt 包管理器轻松安装 Nginx。运行以下命令: 安装完成后,可以使用以下命令来检查 Ngi...
学习
nginx2024-10-16
nginx使用小记
厚积薄发,静水流深,今天介绍nginx的一些使用 基本配置文件 hosts文件配置域名解析 服务器已经安装了nginx, 并且监听80端口: 如果在服务器的hosts文件中配置了域名, 那么请求网络资源时, 首先会去hosts文件中查找是否有该域名的对应IP, 如果有, 直接请求该路径, 如果没有, 再去请求公共的DNS查询IP 例如, 在服务器的hosts文件中追加该配置: 然后使用 curl tcwwjdr/wwjfiles/ip....
学习
nginx2024-05-30
感受下 nginx 带来的魅力
引言 :纯干货分享,汇总了我在工作中八年遇到的各种 Nginx 使用场景,对这篇文章进行了细致的整理和层次分明的讲解,旨在提供简洁而深入的内容。希望这能为你提供帮助和启发! 对于前端开发人员来说,Node.js 是一种熟悉的技术。虽然 Nginx 和 Node.js 在某些理念上有相似之处,比如都支持 HTTP 服务、事件驱动和异步非阻塞操作,但两者并不冲突,各有各自擅长的领域: Nginx :擅长处理底层的服务器端资源,如静态资源处理...
学习
nginx2024-02-21
三年前端还不会配置Nginx?刷完这篇就够了
一口气看完,比自学强十倍! 什么是Nginx Nginx是一个开源的高性能HTTP和反向代理服务器。它可以用于处理静态资源、负载均衡、反向代理和缓存等任务。Nginx被广泛用于构建高可用性、高性能的Web应用程序和网站。它具有低内存消耗、高并发能力和良好的稳定性,因此在互联网领域非常受欢迎。 为什么使用Nginx 1. 高性能:Nginx采用事件驱动的异步架构,能够处理大量并发连接而不会消耗过多的系统资源。它的处理能力比传统的Web服务...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录