Nginx配置
记录Nginx配置与使用
🖋 Nginx的下载
Nginx的使用
常用目录结构
名称 描述 文件 conf 存放Nginx配置文件的目录 配置文件nginx.conf docs 存放默认的Html网页 index页和50x错误页 logs 存储Nginx运行日志 access和error日志 配置文件
### 全局块 ###
user nginx; # 设置 Nginx 工作进程运行的身份(默认为nobody 不同操作系统不同,此项主要涉及安全问题)
worker_processes auto; # 自动根据 CPU 核心数设置工作进程数量 通常等于CPU核心数或者为其俩倍
error_log /var/log/nginx/error.log warn; # 错误日志的位置和级别
pid /run/nginx.pid; # 主进程的 PID 文件位置
### 事件块 ####
# use:用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
# 其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选。
#worker_connections:用于定义Nginx每个进程的最大连接数,即接收前端的最大请求数,默认是1024。
# 最大客户端连接数由worker_processes和worker_connections决定,即Max_clients=worker_processes*worker_connections,
# 在作为反向代理时,最大客户端连接数量 = worker_processes * worker_connections/4。
# 进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
### 事件块 ####
events {
worker_connections 1024; # 每个工作进程可以同时处理的最大连接数 默认为512
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
use epoll; # 使用 epoll 连接处理模型(Linux 系统推荐);事件驱动模型
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
}
### HTTP 块 ###
# 此处配置主要分为两块 server块和upstream(可选),upstream为nginx反向代理的服务器宕机的备用机,通常配置此项为了增加安全性
# server块又包括location块,每个server块都相当于一个虚拟的主机
### HTTP 块 ###
http {
include /etc/nginx/mime.types; # 包含 MIME 类型定义 详见nginx/conf目录下 不设置默认情况下有可能识别到无法处理的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; # 启用高效文件传输模式
tcp_nopush on; # 减少网络包的数量
tcp_nodelay on; # 禁用 Nagle 算法
keepalive_timeout 65; # 保持连接的超时时间
gzip on; # 开启 Gzip 压缩
gzip_disable "msie6"; # 对于 IE6 浏览器禁用 Gzip
# 虚拟主机配置
server {
listen 80; # 监听 80 端口
server_name example.com www.example.com; # 服务的域名
# 静态文件根目录
root /var/www/html;
index index.html index.htm; # 默认索引文件
# 处理所有请求
location / {
try_files $uri $uri/ =404; # 尝试查找文件或目录,不存在则返回 404,此处$uri为当前请求路径/ex则先查询是否有ex的文件,若无则访问此目录
}
# 处理特定路径下的请求
location /images/ {
autoindex on; # 启用目录列表功能
autoindex_exact_size off; # 不显示文件的确切大小
autoindex_localtime on; # 显示本地时间
}
# 错误页面
error_page 404 /404.html;
location = /404.html {
internal; # 只能由内部重定向访问
}
}
# 反向代理配置
server {
listen 8080; # 监听 8080 端口
server_name proxy.example.com;
location / {
proxy_pass https://backend; # 反向代理到后端服务器
proxy_set_header Host $host; # 传递原始 Host 请求头
proxy_set_header X-Real-IP $remote_addr; # 传递客户端 IP 地址
}
}
# 上游服务器组
upstream backend {
server 192.168.1.1:8081; # 第一个后端服务器
server 192.168.1.2:8081; # 第二个后端服务器
}
}