Nginx基础

目录

0、Nginx演进

在新公司刚把项目发布上线后,一般情况下,用户量是比较少的,这个时候可以只用一台服务器去直接访问即可

一年之后,用户的访问量越来越多了,这个时候服务器的负载会越来越高。一台服务器满足不了这么多的用户了,怎么办呢?

这个时候,就需要增加服务器的数量了,增加多个服务器之后,用户要怎么去访问呢?这个时候session是无法共享给其他服务器的,每访问新的服务器都会有新的session

那么这个时候,就需要用到一个中间件Nginx,代理客户端去访问服务器的服务,这个时候的session都是存储在nginx服务器上的,

这个可以理解为反向代理

这个时候,nginx服务器就可以把用户的请求转发到后端Tomcat服务器上,就像你在找房子,是需要过中介的,你找中介看房子,中介通过你想要什么样的房子,就去给你找到合适的房子

当然,患有一种情况,就是每台的服务器资源是不同的,比如一台8G内存服务器,一台16G内存服务器,还有一台64G服务器.假如我想把请求到更多内存资源的服务器上,可以给64G内存服务器加权重

一、什么是Nginx

1.1 Nginx 简介

Nginx(发音类似 "engine X")是由俄罗斯程序员伊戈尔·赛索耶夫(Igor Sysoev)开发的开源 Web 服务器软件,采用 2-clause BSD 许可证发布,可免费用于商业和个人场景。

Nginx 基于异步非阻塞的事件驱动架构 ,能够结合 Linux 下的 epoll、BSD 系统中的 kqueue 等高效 I/O 多路复用机制,实现对大量并发连接的高效处理。其最初的设计目标就是解决传统 Web 服务器在高并发场景下的性能瓶颈,即著名的 C10K 问题(同时处理一万个并发连接)。

1.2 核心架构与技术特点

Nginx 主要具备以下技术特性:

  • Master-Worker 多进程架构:Master 进程负责管理配置、维护 Worker 进程及处理信号;Worker 进程负责实际的网络连接和请求处理。多进程模型能够提高服务稳定性,并降低单个进程故障对整体服务的影响。
  • 事件驱动与非阻塞 I/O:通过事件循环和 I/O 多路复用机制,高效处理大量并发连接,减少线程或进程切换带来的资源开销。
  • 模块化设计:通过模块扩展 HTTP、代理、缓存、日志、访问控制等功能,便于根据业务需求进行功能定制。
  • 高性能与低资源消耗:针对高并发、静态资源访问和网络代理等场景进行了优化,在合理配置和硬件条件下,能够以较低的资源开销处理大量请求。
  • 稳定性与可维护性:支持配置热加载、平滑升级以及 Worker 进程异常退出后的自动拉起,有利于提高服务的可用性。

1.3 主要功能与应用场景

Nginx 不仅可以作为 Web 服务器托管静态资源,还提供多种网络服务能力:

  1. HTTP Web 服务器:提供 HTML、CSS、JavaScript、图片等静态资源的访问服务。
  2. 反向代理服务器:接收客户端请求,并将请求转发至后端应用服务器,隐藏后端服务拓扑。
  3. 负载均衡器:将请求分发至多个后端节点,提高系统的吞吐能力和可用性。
  4. HTTP 缓存服务器:缓存后端响应内容,减少后端压力并降低响应延迟。
  5. 邮件代理服务器:支持 IMAP、POP3、SMTP 等邮件协议的代理功能。
  6. 流量控制与访问管理:支持访问限制、连接数控制、请求速率限制等功能,可用于提升服务安全性和稳定性。

二、Nginx的作用

2.1 正向代理

比如翻墙 :一般情况下,用户需要去看youtube,这个时候是需要用到vpn的,客户端通过代理服务器发请求到vpn服务器上,间接通过vpn就能看到国外的yuutube网站了 正向代理是代理客户端的

2.2 反向代理

比如访问百度 :一般情况下,百度的服务器肯定是不止一台的,在多个用户同时访问的情况下,每个用户访问的服务器是不一样的,比如有北京的服务器、深圳的服务器等等,比如 访问www.baidu.com,用户访问的只是一个域名,后端是有多台服务器的,用户的访问是没有感知的,不知道访问的是具体哪台服务器 反向代理是代理客户端的

记忆口诀

正向代理靠近客户端,代理客户端;反向代理靠近服务器,代理服务端。

2.3 理解负载均衡

nginx有两种负载均衡的策略:内置策略和扩展策略。内置策略为轮询,加权轮询,Iphash。扩展策略

1、轮询

第一次请求是服务器A,第二次服务器B、第三次是服务器C、第四次是服务器A等等,以此类推

2、加权轮询

哪个服务器资源多一些,权重就会高一些,那么请求的数量也会大一些

2.4 动静分离

静态网站和动态网站,有些静态网站是可以不用经过后台服务器去处理的(比如:css、html、jpg、js等等),这些文件是静态的;动态网站是需要把网页中的数据通过服务器端加载显示出来的,这样动静分离之后,可以提高服务器的响应速度

三、Nginx安装编译依赖

Nginx 编译需要 GCC、Make 以及相关开发库。

复制代码
yum install -y gcc gcc-c++ make \
zlib-devel \
openssl-devel \
pcre2-devel

依赖说明:

依赖 作用
gcc C 编译器
gcc-c++ C++ 编译器
make 执行编译
pcre2-devel 支持正则表达式及 Rewrite 模块
zlib-devel 支持 Gzip 压缩
openssl-devel 支持 HTTPS 和 SSL/TLS

注意: 如果缺少 pcre2-devel,执行 ./configure 时可能出现 HTTP rewrite module requires the PCRE library 错误。

3.1、上传并解压 Nginx 安装包

将 Nginx 安装包上传至服务器,例如:

复制代码
nginx-1.30.4.tar.gz

进入安装包所在目录:

复制代码
cd /usr/local/src

解压安装包:

复制代码
tar -zxvf nginx-1.30.4.tar.gz

进入源码目录:

复制代码
cd nginx-1.30.4

参数说明:

参数 作用
-z 通过 gzip 解压
-x 解包
-v 显示详细过程
-f 指定文件

3.2、配置编译参数

执行 configure 生成 Makefile:

bash 复制代码
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module


#  注释
./configure \
--prefix=/usr/local/nginx \                # 指定 Nginx 安装根目录
--sbin-path=/usr/local/nginx/sbin/nginx \   # 指定 Nginx 主程序路径
--conf-path=/usr/local/nginx/conf/nginx.conf \  # 指定主配置文件路径
--pid-path=/usr/local/nginx/logs/nginx.pid \    # 指定 PID 文件路径
--error-log-path=/usr/local/nginx/logs/error.log \  # 指定错误日志路径
--http-log-path=/usr/local/nginx/logs/access.log \  # 指定访问日志路径
--with-http_ssl_module \                    # 启用 HTTPS(SSL/TLS)模块
--with-http_v2_module \                     # 启用 HTTP/2 模块
--with-http_gzip_static_module              # 启用静态 Gzip 文件支持

主要参数说明:

参数 作用
--prefix 指定 Nginx 安装目录
--sbin-path 指定 Nginx 主程序路径
--conf-path 指定配置文件路径
--pid-path 指定 PID 文件路径
--error-log-path 指定错误日志路径
--http-log-path 指定访问日志路径
--with-http_ssl_module 启用 HTTPS 支持
--with-http_v2_module 启用 HTTP/2 模块
--with-http_gzip_static_module 启用静态 Gzip 文件支持

配置成功后,通常会显示:

复制代码
Configuration summary
  + using system PCRE2 library
  + using system OpenSSL library
  + using system zlib library

3.3、编译 Nginx

执行:

bash 复制代码
make

编译成功后,执行安装:

bash 复制代码
make install

3.4、验证安装结果

查看 Nginx 版本:

复制代码
/usr/local/nginx/sbin/nginx -v

预期输出类似:

复制代码
nginx version: nginx/1.30.4

检查编译参数:

复制代码
/usr/local/nginx/sbin/nginx -V

查看安装目录:

复制代码
ls -l /usr/local/nginx

常见目录结构:

复制代码
/usr/local/nginx/
├── conf/       # 配置文件
├── html/       # 默认网站目录
├── logs/       # 日志文件
└── sbin/       # Nginx 主程序

说明: 本笔记仅包含 Nginx Tar 包的解压、依赖安装、编译、安装和结果验证,不涉及服务启动、开机自启及业务配置。

nginx.conf详细配置注释

bash 复制代码
# ==============================
# 1. 全局配置模块(Main)
# ==============================

# 指定 Nginx Worker 进程运行的用户和用户组
#
# 格式:
# user 用户名 [用户组];

# 默认情况下该指令被注释。
# 如果未指定,Nginx 通常使用编译时指定的默认用户。

# 生产环境中通常建议创建专用的 nginx 用户,
# 并按照最小权限原则进行配置。

# user nginx;


# 指定 Worker 进程数量
#
# Worker 进程负责实际处理客户端连接、
# 接收请求以及返回响应。

# 1 表示只启动 1 个 Worker 进程。

# 生产环境通常可以使用:
# worker_processes auto;

# auto 会根据 CPU 核心数自动设置 Worker 进程数量。
worker_processes 1;

# 指定错误日志文件路径及日志级别
#
# 错误日志用于记录 Nginx 运行过程中出现的异常和错误,例如:
# - 配置文件错误
# - 连接后端服务器失败
# - 客户端连接异常
# - 权限不足
# - Worker 进程异常

# 日志级别从低到高通常包括:
# debug、info、notice、warn、error、crit、alert、emerg

# 日志级别越低,记录的信息越详细。

# logs/error.log 是相对路径,
# 通常相对于 Nginx 安装目录 prefix 解析。

# 以下配置默认被注释:

# error_log logs/error.log;
# error_log logs/error.log notice;
# error_log logs/error.log info;


# 指定 Nginx 主进程 PID 文件路径
#
# PID 文件用于保存 Nginx Master 进程的进程号。

# 常见用途:
# - 管理 Nginx 进程
# - 停止或重载 Nginx
# - 通过脚本获取主进程 PID

# 例如:
# kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)

# 默认配置被注释:
# pid logs/nginx.pid;



# ==============================
# 2. events 模块
# ==============================

events {

    # 设置单个 Worker 进程允许同时处理的最大连接数。
    #
    # worker_connections 1024 表示:每个 Worker 进程最多允许处理 1024 个连接。

    # 注意:
    # worker_connections 表示连接数上限,
    # 不等于每秒请求数(QPS)。

    # 如果启用了反向代理:
    # 一个客户端连接可能对应:
    # 1. 一个客户端连接
    # 2. 一个到后端服务器的连接

    # 因此,实际能够承载的客户端数量,
    # 还取决于客户端连接与后端连接的数量关系。

    # 实际最大连接数还受到以下因素影响:
    # - 文件描述符限制
    # - 操作系统内核参数
    # - CPU 和内存
    # - 网络带宽
    # - 后端服务器处理能力

    worker_connections 1024;
}


# ==============================
# 3. http 模块
# ==============================

http {

    # 引入 MIME 类型配置文件
    #
    # MIME 类型用于告诉客户端:
    # 当前响应内容属于什么类型。

    # 常见 MIME 类型示例:
    # text/html                HTML 文件
    # text/css                 CSS 文件
    # application/javascript   JavaScript 文件
    # image/png                PNG 图片

    # mime.types 通常位于:
    # /usr/local/nginx/conf/mime.types

    # 当访问 HTML、CSS、JavaScript、图片等静态资源时,
    # MIME 类型可以帮助浏览器正确识别响应内容。

    include mime.types;

    # 设置默认响应类型
    #
    # 如果 Nginx 无法根据文件扩展名匹配到对应的 MIME 类型,
    # 则使用 application/octet-stream。

    # application/octet-stream 通常表示通用二进制数据。

    # 例如:
    # 如果访问一个没有对应 MIME 类型的文件,
    # Nginx 可能会使用该类型返回。

    default_type application/octet-stream;

    # ==============================
    # 4. 日志格式配置
    # ==============================
    # 定义访问日志格式
    #
    # log_format 用于定义访问日志的记录格式。
    # main 是日志格式名称,
    # 后续可以通过 access_log 指令引用该格式。

    # 下面的格式记录了常见的客户端请求信息:

    # $remote_addr
    # 客户端 IP 地址

    # $remote_user
    # 经过 HTTP Basic Auth 认证的用户名。
    # 如果没有认证,通常为 -

    # $time_local
    # 服务器本地时间

    # $request
    # 客户端请求行,例如:
    # GET /index.html HTTP/1.1

    # $status
    # HTTP 响应状态码,例如:
    # 200、404、500

    # $body_bytes_sent
    # 发送给客户端的响应体字节数,
    # 不包括响应头。

    # $http_referer
    # 请求来源页面,也就是 Referer 请求头。

    # $http_user_agent
    # 客户端 User-Agent 信息,
    # 通常包含浏览器、操作系统等信息。

    # $http_x_forwarded_for
    # X-Forwarded-For 请求头。
    # 常用于反向代理场景中传递客户端 IP。

    # 注意:
    # X-Forwarded-For 是请求头,
    # 不能无条件认为其中的 IP 都可信。
    # 生产环境中应结合可信代理配置进行处理。

    # 当前配置默认被注释:

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



    # ==============================
    # 5. 访问日志配置
    # ==============================

    # 指定访问日志文件和日志格式
    #
    # access_log 用于记录客户端访问 Nginx 的请求。

    # 示例日志:
    #
    # 127.0.0.1 - - [15/Sep/2026:10:00:00 +0800]
    # "GET /index.html HTTP/1.1" 200 615

    # logs/host.access.log 是日志文件路径。
    # main 是前面定义的日志格式名称。

    # 当前配置默认被注释:

    # access_log logs/host.access.log main;



    # ==============================
    # 6. 静态文件高效传输
    # ==============================

    # 启用 sendfile 零拷贝机制
    #
    # sendfile 可以利用操作系统提供的高效文件传输机制,
    # 减少用户态和内核态之间的数据复制,
    # 从而提高静态文件传输效率。

    # 适用场景包括:
    # - HTML
    # - CSS
    # - JavaScript
    # - 图片
    # - 视频
    # - 其他静态文件

    # 注意:
    # sendfile 并不是所有场景下都能提升性能。
    # 实际效果取决于操作系统、文件系统和业务场景。

    sendfile on;



    # TCP 数据包优化
    #
    # tcp_nopush 主要用于配合 sendfile,
    # 尝试减少 TCP 数据包数量,
    # 使响应头和文件数据更加合理地组织发送。
    # 通常用于优化静态文件传输。
    # 当前配置默认被注释:
    # tcp_nopush on;

    # ==============================
    # 7. HTTP 长连接
    # ==============================

    # 设置 HTTP Keep-Alive 超时时间,单位为秒。
    #
    # 65 表示:
    # HTTP 长连接在空闲 65 秒后关闭。

    # HTTP 长连接可以复用同一个 TCP 连接,
    # 避免频繁建立和关闭 TCP 连接,
    # 从而降低连接建立开销。

    # 注意:
    # 这里的 65 秒是空闲超时时间,
    # 不是请求处理时间限制。

    keepalive_timeout 65;



    # ==============================
    # 8. Gzip 压缩
    # ==============================

    # 启用 Gzip 压缩
    #
    # Gzip 可以压缩响应内容,
    # 减少网络传输数据量。

    # 适用于:
    # - HTML
    # - CSS
    # - JavaScript
    # - JSON
    # - XML
    # - 其他文本类型内容

    # 不建议对已经压缩的图片、视频等内容重复压缩。

    # 当前配置默认被注释:

    # gzip on;



    # ==============================
    # 9. server 模块
    # ==============================

    # 一个 server 块代表一个虚拟服务器。
    # Nginx 可以在同一个配置文件中配置多个 server,
    # 并根据客户端请求的 IP、端口和 Host 请求头,
    # 选择匹配的 server。

    # 常见用途:
    # - 配置多个网站
    # - 配置不同域名
    # - 配置不同监听端口
    # - 配置 HTTP 和 HTTPS 服务

    server {

        # 监听 80 端口
        # 80 是 HTTP 默认端口。

        # 客户端访问:
        # http://服务器IP/

        # 默认会连接服务器的 80 端口。

        listen 80;


        # 指定虚拟主机域名
        #
        # localhost 表示匹配 Host 为 localhost 的请求。

        # 例如:
        # http://localhost/

        # 生产环境中通常改成实际域名:
        #
        # server_name www.example.com;

        server_name localhost;


        # ==============================
        # 10. 当前虚拟主机的访问日志
        # ==============================
        # 指定当前 server 的访问日志文件。
        # 当前配置默认被注释:
        # access_log logs/host.access.log main;


        # ==============================
        # 11. location 请求匹配模块
        # ==============================
        # location 用于匹配客户端请求的 URI。

        # / 表示匹配所有以 / 开头的普通请求,
        # 是一个通用的前缀匹配规则。
        # 例如:
        # /
        # /index.html
        # /images/logo.png
        # /test/a

        # 这些请求都可以匹配到该 location。

        location / {

            # 指定静态资源根目录
            #
            # html 是相对路径,
            # 通常相对于 Nginx 安装目录解析。

            # 如果安装目录为:
            # /usr/local/nginx

            # 那么 html 通常对应:
            # /usr/local/nginx/html

            # 当客户端请求:
            # /index.html

            # Nginx 通常会尝试读取:
            # /usr/local/nginx/html/index.html

            root html;


            # 指定默认首页文件
            #
            # 当客户端请求目录时,
            # Nginx 会按照顺序查找以下文件:

            # 1. index.html
            # 2. index.htm

            # 例如访问:
            # http://localhost/

            # Nginx 会尝试返回:
            # /usr/local/nginx/html/index.html

            # 如果文件不存在,
            # 可能返回 403 或其他错误。

            index index.html index.htm;
        }



        # ==============================
        # 12. 错误页面配置
        # ==============================

        # 自定义错误页面
        #
        # 当 Nginx 返回以下状态码时:

        # 500:服务器内部错误
        # 502:网关错误,常见于反向代理连接后端失败
        # 503:服务不可用
        # 504:网关超时

        # Nginx 会将错误页面内部映射到:
        #
        # /50x.html

        # 注意:
        # error_page 是内部错误页面映射,
        # 不一定代表客户端发生了 HTTP 重定向。

        error_page 500 502 503 504 /50x.html;



        # 精确匹配 /50x.html
        #
        # = 表示精确匹配。

        # 只有请求 URI 完全等于:
        #
        # /50x.html

        # 才会匹配该 location。

        location = /50x.html {

            # 指定错误页面所在目录
            #
            # html 对应:
            # /usr/local/nginx/html

            root html;
        }



        # ==============================
        # 13. 反向代理 PHP 示例
        # ==============================

        # 下面是一个将 PHP 请求转发给后端 Apache 的示例。
        #
        # 当前配置被注释,不会生效。

        # location ~ \.php$ {

        #     # 将匹配到的 PHP 请求转发到:
        #     # http://127.0.0.1
        #
        #     # 这里的 127.0.0.1:80
        #     # 通常表示本机 80 端口服务。

        #     proxy_pass http://127.0.0.1;

        # }



        # ==============================
        # 14. FastCGI 配置示例
        # ==============================

        # 下面是将 PHP 请求转发给 PHP-FPM 的示例。
        #
        # 当前配置被注释,不会生效。

        # location ~ \.php$ {

        #     # 指定 PHP 文件所在目录

        #     root html;


        #     # 将请求转发给 PHP-FPM
        #     # PHP-FPM 默认可能监听 127.0.0.1:9000

        #     fastcgi_pass 127.0.0.1:9000;


        #     # 指定默认 PHP 文件

        #     fastcgi_index index.php;


        #     # 设置 PHP 脚本的实际文件路径

        #     fastcgi_param SCRIPT_FILENAME
        #     /scripts$fastcgi_script_name;


        #     # 引入 FastCGI 通用参数

        #     include fastcgi_params;

        # }



        # ==============================
        # 15. 禁止访问 .htaccess 文件
        # ==============================

        # Apache 常用的 .htaccess 文件用于目录级配置。

        # 如果 Apache 和 Nginx 使用相同的网站目录,
        # 可能需要禁止客户端直接访问 .htaccess 文件。

        # 当前配置被注释:

        # location ~ /\.ht {

        #     # 拒绝所有访问

        #     deny all;

        # }
    }



    # ==============================
    # 16. 其他虚拟主机示例
    # ==============================

    # 下面是另一个虚拟主机示例。
    #
    # 当前配置被注释,不会生效。

    # 可以通过不同的端口和域名,
    # 配置多个独立的网站。

    # server {
    #     # 监听 8000 端口
    #     listen 8000;
    #     # 监听指定域名的 8080 端口
    #     listen somename:8080;
    #     # 配置虚拟主机名称
    #     server_name somename alias another.alias;
    #     # 配置网站根目录
    #     location / {
    #         root html;
    #         index index.html index.htm;
    #     }

    # }



    # ==============================
    # 17. HTTPS 服务器示例
    # ==============================

    # 下面是 HTTPS 虚拟主机示例。
    #
    # 当前配置被注释,不会生效。

    # 启用 HTTPS 通常需要:
    # - 监听 443 端口
    # - 配置 SSL/TLS 证书
    # - 配置证书私钥
    # - 根据实际需求配置 TLS 参数

    # server {
    #     # 监听 443 端口并启用 SSL
    #     listen 443 ssl;
    #     # 指定 HTTPS 域名
    #     server_name localhost;
    #     # SSL/TLS 证书文件
    #     ssl_certificate cert.pem;
    #     # SSL/TLS 私钥文件
    #     ssl_certificate_key cert.key;
    #     # SSL 会话缓存
    #     ssl_session_cache shared:SSL:1m;
    #     # SSL 会话超时时间
    #     ssl_session_timeout 5m;
    #     # 指定密码套件
    #     ssl_ciphers HIGH:!aNULL:!MD5;
    #     # 是否优先使用服务端密码套件顺序
    #     ssl_prefer_server_ciphers on;

    #     # HTTPS 网站根目录
    #     location / {
    #         root html;
    #         index index.html index.htm;
    #     }
    # }

}

生产配置建议

bash 复制代码
cat > /usr/lib/systemd/system/nginx.service <<'EOF'
[Unit]
Description=Nginx Web Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

===================================注释版本======================================================
# ==============================  
# Nginx Systemd 服务配置文件  
# 文件位置:  
# /usr/lib/systemd/system/nginx.service  
# ==============================    
[Unit]  
# 服务描述信息  
Description=Nginx Web Server  

# 定义启动顺序  
# nginx 在网络、远程文件系统、DNS解析服务之后启动  
After=network.target remote-fs.target nss-lookup.target  
  
  
  
[Service]  
# nginx 启动后会进入后台运行(fork)  
# systemd通过PID文件管理主进程  
Type=forking  

# 指定 nginx 主进程 PID 文件位置  
# 源码安装默认生成:  
# /usr/local/nginx/logs/nginx.pid  
PIDFile=/usr/local/nginx/logs/nginx.pid  
  
# 启动 nginx 前执行配置检测  
# 等同于:  
# nginx -t  
#  
# 如果配置文件错误,则不会启动 nginx  
ExecStartPre=/usr/local/nginx/sbin/nginx -t  

# 启动 nginx  
# 等同于手动执行:  
# /usr/local/nginx/sbin/nginx  
ExecStart=/usr/local/nginx/sbin/nginx  
  
# 重新加载 nginx 配置  
# 不停止服务,只重新读取配置  
#  
# 等同于:  
# nginx -s reload  
#  
# 常用于修改 nginx.conf 后生效  
ExecReload=/usr/local/nginx/sbin/nginx -s reload  

# 优雅停止 nginx  
# 等待已有连接处理完成后退出  
#  
# 等同于:  
# nginx -s quit  
ExecStop=/usr/local/nginx/sbin/nginx -s quit  
  
# 给 nginx 创建独立临时目录  
# 提高安全性  
PrivateTmp=true  
  
# nginx异常退出时自动重启  
#  
# 例如:  
# nginx进程崩溃  
# kill异常结束  
#  
# systemd会自动重新启动服务  
Restart=on-failure  
  
[Install]  
# 设置服务启动级别  
#  
# multi-user.target:  
# 类似Linux普通运行级别3  
# 表示系统进入多用户模式后自动启动  
#  
# 配合:  
# systemctl enable nginx  
#  
# 实现开机自动启动  
WantedBy=multi-user.target

3.5 常用命令

bash 复制代码
# 启动
/usr/local/nginx/sbin/nginx

# 停止
/usr/local/nginx/sbin/nginx -s stop

# 优雅停止
/usr/local/nginx/sbin/nginx -s quit

# 重栽配置
/usr/local/nginx/sbin/nginx -s reload

# 测试配置
/usr/local/nginx/sbin/nginx -t

测试访问

相关推荐
myy-learn1 小时前
33-HTTP协议TCP网页设计相关知识
tcp/ip·http
是枚小菜鸡儿吖1 小时前
Windows 和 iPhone 怎么互传文件?用 PairDrop 搭一个自己的浏览器传输入口
服务器·人工智能·大模型
网硕互联的小客服2 小时前
如何在Ubuntu系统上查看和刷新DNS缓存?操作方法与原理解析
运维·服务器·网络·ubuntu
聚搜云——JuSouClouD2 小时前
2026找阿里云代理商采购GPU服务器,有没有额外折扣?
服务器·阿里云·云计算
wangxiaojie66882 小时前
一键自动认证校园网,告别手动配置
服务器
薛之谦_2 小时前
Nginx 配置 HTTPS 全指南:每个参数逐一详解
运维·nginx
张宇Joaquin2 小时前
基于鲲鹏服务器的金仓数据库调优参考实践
服务器
国际云,接待2 小时前
华为云 ELB 如何配出真正高可用:跨可用区 ECS、健康检查和灰度摘流实战
服务器
天天喝旺仔3 小时前
深入理解 JWT:从 Token 结构、签名机制到前后端鉴权实战
redis·安全·spring·微服务·https