Nginx概述
Nginx
作为负载均衡在 Linux
系统上具备很好的并发性能,并且占用极小的内存。但是在 Windows
系统上并不支撑较高并发,所以在Windows
系统上选用Nginx
作为负载均衡,需要考虑并发情况。
- 若并发需求低于 300,部署集群仅以热备为目的,可选用 Nginx 作为负载均衡,若并发需求超过 300,则不建议使用 Nginx,须换用其他负载均衡。
nginx下载
因为学习使用以及电脑性能各方面考虑,就没有安装ubuntu服务器或者安装虚拟机,直接在windows操作性系统下载使用
- 点击nginx官网下载地址
nginx安装
将下载好的nginx解压放在一个自己便于管理的文件夹下,不要点击nginx.exe
请注意,如果您在 Windows 上以服务的形式安装了 Nginx,那么您可能需要使用服务管理命令来控制 Nginx,而不是直接运行 nginx.exe。此外,确保您有适当的权限来执行这些命令,尤其是在尝试管理作为服务运行的 Nginx 时。
附上nginx中文文档地址:nginx中文文档
启动步骤
cmd
进入nginx文件夹终端。- Windows+R 输入 cmd 进行以下编译,按照本文档部署的 Nginx 应用,请使用下面的运维命令。
- 进入 Nginx 目录,输入
start nginx
启动Nginx
。如下图所示: - 会有一次终端的闪烁(一闪而过)
一般初始化nginx配置中是监听的就是9000端口(不一定,可以往后看自己配置这个监听的端口)。如果在浏览器能昂文
基础运维命令
在nginx目录下执行cmd,进入终端
开启:start nginx
更改完之后重启:nginx -s reload
快速停止nginx:nginx -s stop
优雅停止:nginx -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
基础配置以及注释
# Nginx配置文件
# 定义了服务器如何运行和处理请求的配置
# 指定使用的工作进程数
worker_processes 1;
# 事件处理模块配置,用于设置连接处理方式
events {
# 每个工作进程的最大连接数
worker_connections 1024;
}
# HTTP服务配置,包括全局、服务器块和位置块配置
http {
# 包含mime.types文件,用于定义各种文件类型的默认 MIME 类型
include mime.types;
# 默认的 MIME 类型
default_type application/octet-stream;
# 启用sendfile特性,用于提高文件发送性能
sendfile on;
# 设置客户端连接的保持活动状态超时时间
keepalive_timeout 65;
# 启用gzip压缩,减少数据传输量
gzip on;
# 服务器块配置,可以有多个,用于处理不同的请求
server {
# 监听的端口和服务器名称
listen 9000;
server_name localhost;
# 首页请求处理
location / {
# 尝试按顺序查找对应的文件,未找到则重定向到/index.html或/index.htm
try_files $uri $uri/ /index.html /index.htm;
}
# API请求处理
location /api/ {
# 将API请求代理到指定的IP地址和端口上
proxy_pass http://192.168.31.111:9000;
}
}
}
结构解释
Nginx 的配置文件结构是分层的,主要分为四个部分:主配置区块、事件区块、HTTP区块和服务器区块。下面是每个区块的简要说明和它们在配置文件中的作用:
-
主配置区块 (
http
之外的部分)- 这是最外层的配置区块,包含了全局的配置指令,如配置文件的包含指令
include
、用户定义的变量、进程数worker_processes
等。
- 这是最外层的配置区块,包含了全局的配置指令,如配置文件的包含指令
-
事件区块 (
events
{})- 这个区块配置了与客户端连接相关的设置,比如连接超时时间、工作模式(单线程或多线程)等。
-
HTTP区块 (
http
{})- 这是核心区块,包含了处理 HTTP 请求相关的配置。它包括文件扩展名与 MIME 类型的映射、日志定义、连接超时等。
-
服务器区块 (
server
{})- 位于 HTTP 区块内部,用于定义如何处理针对特定域名或 IP 地址的请求。服务器区块可以包含多个,用于配置虚拟主机。
在服务器区块内部,还可以有:
- 监听区块 (
listen
): 指定服务器监听的地址和端口。 - 服务器名称区块 (
server_name
): 定义当前服务器块适用的域名。 - 位置区块 (
location
{}): 定义请求的 URI 匹配规则,以及匹配后的处理方式,如静态资源服务、代理设置等。
一个典型的 Nginx 配置文件结构示例:
# 用户和组
user nginx;
worker_processes auto;
# 错误日志定义
error_log /var/log/nginx/error.log warn;
# 进程pid文件
pid /var/run/nginx.pid;
# 事件区块
events {
worker_connections 1024;
}
# HTTP区块
http {
# 文件扩展名与MIME类型的映射
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;
# 其他HTTP设置
sendfile on;
# TCP_NODELAY 套接字选项
tcp_nopush on;
# 防止网络运营商缓存页面
tcp_nodelay on;
# 包含其他配置文件
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
# 服务器区块
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
# 服务器名称
server_name_in_redirect off;
# 客户端请求头部中Host字段的值
root /usr/share/nginx/html;
# 默认页面
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
# 配置PHP处理
}
# 其他location区块...
}
# 其他服务器区块...
}
这个结构展示了 Nginx 配置文件的基本框架,实际配置可能会更复杂,包括更多的指令和区块。理解这个基本结构对于编写和维护 Nginx 配置文件至关重要。