Nginx入门

一、Nginx 简介

1.1 基本概念

Nginx 是一款高性能的 HTTP 和反向代理服务器,同时也提供了 IMAP/POP3/SMTP 服务。由俄罗斯的工程师 Igor Sysoev 开发,在 2004 年首次发布。Nginx 以其轻量级、高并发处理能力、低内存消耗和丰富的功能特性,在互联网行业中被广泛应用。无论是大型网站、云计算平台,还是小型企业应用,Nginx 都能稳定可靠地提供服务。

1.2 核心功能

  • HTTP 代理与反向代理:Nginx 可以作为正向代理服务器,代替客户端向目标服务器发起请求;也能作为反向代理服务器,接收客户端请求,并将请求转发到后端的多个服务器上,实现负载均衡。
  • 负载均衡:通过多种负载均衡算法,如轮询、加权轮询、IP 哈希等,将客户端请求均匀地分配到后端的多个服务器节点,提高系统的处理能力和可用性。
  • 静态资源服务:能够高效地处理静态文件(如 HTML、CSS、JavaScript、图片等)的请求,直接将静态资源返回给客户端,减轻后端应用服务器的压力。
  • 缓存功能:支持对请求和响应进行缓存,减少对后端服务器的访问次数,提高响应速度,降低带宽消耗。
  • SSL/TLS 加密:提供 SSL/TLS 证书配置,实现 HTTPS 协议,保证数据传输的安全性和完整性。
  • 虚拟主机:可以在一台物理服务器上通过配置多个虚拟主机,为不同的域名或 IP 地址提供独立的 Web 服务。

1.3 应用场景

  • Web 服务器:替代传统的 Apache 等 Web 服务器,为网站提供高效的静态和动态内容服务。
  • 反向代理服务器:隐藏后端真实服务器,保护服务器安全,并通过负载均衡提高服务的可用性和性能。
  • API 网关:作为 API 请求的入口,对 API 请求进行转发、限流、鉴权等处理。
  • 邮件代理服务器:处理 IMAP/POP3/SMTP 协议相关的邮件服务。

二、Nginx 配置

2.1 配置文件结构

Nginx 的配置文件通常位于/etc/nginx/nginx.conf(不同操作系统和安装方式可能有所不同)。其配置文件采用分层结构,主要分为以下几个部分:

  • 全局块:配置影响 Nginx 全局运行的指令,如工作进程数、错误日志路径等。

user  nginx;

worker_processes  auto;

error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;

  • events 块:配置 Nginx 的网络连接相关参数,如最大连接数等。

events {

    worker_connections  1024;

}

  • http 块:配置 HTTP 协议相关的指令,是 Nginx 配置的核心部分,包括服务器配置、虚拟主机配置、负载均衡配置等。

http {

    include       /etc/nginx/mime.types;

    default_type  application/octet-stream;

    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;

    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

}

在 http 块中,还可以包含多个 server 块,每个 server 块用于配置一个虚拟主机。

server {

    listen       80;

    server_name  example.com;

    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;

    }

}

2.2 关键配置项详解

  • user:指定 Nginx 工作进程运行的用户和用户组,默认是nginx用户。
  • worker_processes:设置 Nginx 工作进程的数量,通常设置为 CPU 核心数,以充分利用服务器资源。
  • error_log:配置错误日志的路径和日志级别,常见的日志级别有debuginfonoticewarnerrorcritalertemerg
  • pid:指定 Nginx 主进程 ID 的存储文件路径。
  • worker_connections:每个工作进程允许的最大连接数。
  • listen:指定虚拟主机监听的 IP 地址和端口号,如listen 80;表示监听 80 端口,listen 192.168.1.100:80;表示监听特定 IP 的 80 端口。
  • server_name:设置虚拟主机的域名,可以配置多个域名,如server_name example.com www.example.com;
  • location:用于匹配请求的 URL,并对匹配到的请求进行相应的处理。可以设置请求的根目录、索引文件、反向代理转发等。例如:

location /api/ {

    proxy_pass http://backend_servers;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

上述配置表示将以/api/开头的请求转发到名为backend_servers的后端服务器组,并设置相关的请求头信息。

2.3 负载均衡配置

Nginx 支持多种负载均衡算法,下面以加权轮询为例,介绍负载均衡的配置方法:

http {

    upstream backend_servers {

        server 192.168.1.101:8080 weight=5;

        server 192.168.1.102:8080 weight=3;

        server 192.168.1.103:8080;

    }

    server {

        listen       80;

        server_name  example.com;

        location / {

            proxy_pass http://backend_servers;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }

在上述配置中,upstream定义了名为backend_servers的后端服务器组,其中包含三台服务器,通过weight参数设置了每台服务器的权重,权重越高,分配到的请求越多。server块中的proxy_pass指令将请求转发到backend_servers后端服务器组。

三、Nginx 命令

3.1 启动 Nginx

在安装好 Nginx 后,可以使用以下命令启动 Nginx 服务:

  • systemd 方式(适用于大多数 Linux 发行版)

sudo systemctl start nginx

  • 传统方式:进入 Nginx 的安装目录(默认为/usr/sbin),执行以下命令:

sudo /usr/sbin/nginx

3.2 停止 Nginx

  • 快速停止:立即终止 Nginx 进程,可能会导致正在处理的请求中断。

sudo systemctl stop nginx

sudo /usr/sbin/nginx -s stop

  • 优雅停止:等待所有正在处理的请求完成后再停止 Nginx 服务。

sudo systemctl quit nginx

sudo /usr/sbin/nginx -s quit

3.3 重启 Nginx

  • 先停止再启动

sudo systemctl restart nginx

  • 重新加载配置文件:在不停止 Nginx 服务的情况下,重新加载配置文件,使新的配置生效。

sudo systemctl reload nginx 

sudo /usr/sbin/nginx -s reload

3.4 检查配置文件语法

在修改 Nginx 配置文件后,可以使用以下命令检查配置文件是否存在语法错误:

sudo nginx -t

如果配置文件语法正确,会显示类似 “nginx: the configuration file /etc/nginx/nginx.conf syntax is ok” 的提示信息;如果存在错误,会提示具体的错误位置和原因。

3.5 查看 Nginx 版本

使用以下命令可以查看 Nginx 的版本信息:

nginx -v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值