侧边栏壁纸
  • 累计撰写 89 篇文章
  • 累计创建 17 个标签
  • 累计收到 23 条评论

目 录CONTENT

文章目录

nginx配置文件详解

Administrator
2025-03-21 / 0 评论 / 0 点赞 / 27 阅读 / 0 字

Nginx作为一款高性能的HTTP和反向代理服务器,在动态页面处理方面效率会比apache高,广泛应用于各类Web服务器。本文将详细介绍Nginx配置文件的结构及其主要配置项。

1.配置文件结构

Nginx的配置文件通常位于/etc/nginx/目录名为nginx.conf的文件,Nginx 配置文件的结构是层次化的,由多个上下文(contexts)和指令(directives)组成。每个上下文可以包含其他上下文或指令。下面是 Nginx 配置文件的基本结构模板:

# For more information on configuration, see:

# * Official English Documentation: http://nginx.org/en/docs/

# * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;

worker_processes auto;

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

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

worker_connections 1024;

}

http {

log_format main '$remote_addr -remote_user [time_local] "$request" '

'$statusbody_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;

keepalive_timeout 65;

types_hash_max_size 4096;

include /etc/nginx/mime.types;

default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.

# See http://nginx.org/en/docs/ngx_core_module.html#include

# for more information.

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

server {

listen 80;

listen [::]:80;

server_name _;

root /usr/share/nginx/html;

# Load configuration files for the default server block.

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

error_page 404 /404.html;

location = /404.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

# Settings for a TLS enabled server.

#

# server {

# listen 443 ssl http2;

# listen [::]:443 ssl http2;

# server_name _;

# root /usr/share/nginx/html;

#

# ssl_certificate "/etc/pki/nginx/server.crt";

# ssl_certificate_key "/etc/pki/nginx/private/server.key";

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 10m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

#

# # Load configuration files for the default server block.

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

#

# error_page 404 /404.html;

# location = /40x.html {

# }

#

# error_page 500 502 503 504 /50x.html;

# location = /50x.html {

# }

# }

}

Nginx配置文件主要有4大模块构成:

1.全局块

user: 指定Nginx进程的运行用户。默认值通常为nginx。

worker_processes: 指定Nginx的工作进程数。根据服务器的CPU核心数进行设置可以提升性能。

error_log: 定义错误日志文件的位置和日志级别。日志级别包括debug、info、notice、warn、error、crit等。

pid: 指定存放Nginx进程ID文件的位置。

2. 事件模块(events)

worker_connections: 每个工作进程可以同时处理的最大连接数。与worker_processes一起决定了Nginx的并发处理能力。

3. HTTP模块

http 块包含了所有与HTTP相关的设置,包括虚拟主机、缓存、代理、重写规则等。

include: 包含其他配置文件。/etc/nginx/mime.types定义了MIME类型,/etc/nginx/conf.d/*.conf包含了其他子配置文件。

default_type: 默认响应内容类型。

log_format: 自定义日志格式

access_log: 访问日志位置。

sendfile: 启用高效的文件传输模式。默认开启。

keepalive_timeout: 定义客户端保持活动连接的超时时间。

4.Server模块

listen: 定义服务器监听的端口。

server_name: 定义虚拟主机名。

location: 用于匹配URI,定义请求的处理方式。

root: 设置请求的根目录。

index: 定义默认的索引文件。

error_page: 指定错误页面。当发生404错误时,跳转到/404.html。

在 http 块内,可以有多个 server 块,每个 server 块定义了一个虚拟主机。

listen:监听的端口。

server_name:服务名或域名。

root:网站根目录。

index:默认首页文件。

location:基于请求的URI来匹配不同的配置。

proxy_pass:反向代理设置。

try_files:尝试按顺序加载文件。

5.反向代理配置

反向代理是Nginx常用的功能之一,通过配置Nginx作为反向代理服务器,可以实现负载均衡、缓存、SSL终止等功能。

proxy_pass: 指定后端服务器的地址。

proxy_set_header: 设置请求头信息,传递客户端的真实IP地址等信息

server {

listen 80;

server_name example.com;

location / {

proxy_pass http://backend_server;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

}

正向代理和反向代理示意图:

相似性:

代理行为:无论是正向代理还是反向代理,它们都接收客户端的请求,然后将这些请求转发到其他地方,并将结果返回给客户端。

配置方式:在 Nginx 中,两者的配置结构都使用 location 和 proxy_pass 指令。这意味着,从结构上看,它们在配置文件中看起来非常相似。

差异性:

正向代理:代理的目标是代表客户端与互联网上的服务器交互。通常用于内容过滤、安全性、匿名浏览等。

反向代理:代理的目标是代表后端服务器与客户端交互。常用于负载均衡、SSL 终止、缓存等。

客户端知晓性:

正向代理:客户端知道并配置自己去使用代理。

反向代理:客户端通常不知道自己正在与反向代理通信,而认为自己直接与后端服务器通信。

配置上的差异:

正向代理:可能需要配置访问控制、内容过滤规则和缓存策略。

反向代理:可能需要配置负载均衡策略、健康检查、SSL 终止等。

6.负载均衡配置

Nginx支持多种负载均衡策略,包括轮询、IP哈希、最少连接等。

upstream: 定义后端服务器组。

proxy_pass: 将请求转发到后端服务器组。

http {

upstream backend {

server backend1.example.com;

server backend2.example.com;

}

server {

listen 80;

server_name example.com;

location / {

proxy_pass http://backend;

}

}

}

注释 :Nginx使用 # 符号来表示注释,从 # 开始到行尾的所有内容都会被 Nginx 忽略。

变量(Variables):Nginx 支持使用变量来存储信息并在配置中引用。变量通常以 开头,比如 host、$url等。

0

评论区