Nginx配置最全详解(图文全面总结)

  • 时间:2025-10-22 16:03 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:Nginx是大型架构核心,下面我重点详解Nginx配置@mikechen文章来源:mikechen.ccNginx 配置Nginx 的配置由指令 (directives) 和上下文 (contexts) 组成。所有指令都以分号 ; 结尾,一个标准的 Nginx 配置文件 (nginx.conf) 看起来像这样:全局块 (main):配置影响 Nginx 服务

Nginx是大型架构核心,下面我重点详解Nginx配置@mikechen

文章来源:mikechen.cc

Nginx 配置

Nginx 的配置由指令 (directives) 和上下文 (contexts) 组成。

所有指令都以分号 ; 结尾,一个标准的 Nginx 配置文件 (nginx.conf) 看起来像这样:

Nginx配置最全详解(图文全面总结)


全局块 (main):配置影响 Nginx 服务器整体运行的指令,如 worker_processes (工作进程数)。

Events 块 (events {}):配置 Nginx 和用户之间的连接,如 worker_connections (每个工作进程的最大连接数)。

HTTP 块 (http {}):配置 HTTP 服务器的具体行为,这是我们最常配置的部分。它包含一个或多个 Server 块。

Server 块 (server {}):配置一个虚拟主机。每个 server 块可以定义一个独立的站点。

Location 块 (location {}):配置如何处理 URI (请求路径)。一个 server 块可以包含多个 location 块。


Server 块:配置你的网站

server 块是 Nginx 配置的核心,它定义了一个虚拟主机,一般对应一个域名。

Nginx配置最全详解(图文全面总结)


1. 监听端口和域名

listen: 指定服务器监听的 IP 地址和端口。

listen 80;:监听所有 IP 的 80 端口。

listen 127.0.0.1:8080;:只监听本地的 8080 端口。

server_name: 指定服务器的域名或 IP 地址。

2. 定义根目录和首页

root: 指定网站的根目录。

index: 指定默认首页文件的名称。

示例:

server{
listen80;
server_name mywebsite.com;
root/var/www/mywebsite;
index index.html index.htm;
}


Location 块:处理请求路径

location 块是 Nginx 强劲的关键,它根据 URI 路径来分发请求。

1. Location 匹配优先级

Nginx配置最全详解(图文全面总结)


匹配规则有优先级,从高到低排列:

= (准确匹配):location = / 只匹配根目录。

^~ (前缀匹配,优先于正则):location ^~ /images/ 会匹配所有 /images/ 开头的请求,且不再检查后面的正则表达式。

~ 或 ~* (正则表达式):~ 是区分大小写的匹配,~* 是不区分大小写的匹配。


2. Location 块常用指令

proxy_pass: 将请求代理到另一个服务器,这是实现反向代理的核心。

rewrite: 使用正则表达式重写 URI。

示例:反向代理

server{
listen80;
server_name api.mywebsite.com;

location/{# 将请求代理到后端服务器proxy_pass http://localhost:3000;# 常用代理头,解决后端获取真实 IP 问题proxy_set_headerHost $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


Nginx高级配置

1. 负载均衡

Nginx配置最全详解(图文全面总结)


使用 upstream 块定义一组后端服务器,然后在 location 中引用。

least_conn: 优先将请求分发给连接数最少的服务器。

ip_hash: 根据客户端 IP 地址分配请求,确保同一客户端总是被分发到同一服务器。

示例:

# 定义一个服务器组upstream backend_servers {# 负载均衡算法:默认是轮询 (round-robin)# 也可以是 least_conn; 或 ip_hash;server backend1.example.com;
server backend2.example.com;
}

server{
listen80;
server_name myapp.com;

location/{
proxy_pass http://backend_servers;}
}

2. SSL/TLS 加密 (HTTPS)

配置 HTTPS 需要 SSL 证书和私钥。

示例:

server{# 监听 80 端口,并将所有 HTTP 请求重定向到 HTTPSlisten80;
server_name mysecureapp.com;
return301 https://$server_name$request_uri;
}

server{
listen443 ssl;
server_name mysecureapp.com;# 指定证书和私钥路径ssl_certificate/etc/nginx/certs/mysecureapp.com.pem;
ssl_certificate_key/etc/nginx/certs/mysecureapp.com-key.pem;# 其他安全配置ssl_protocolsTLSv1.2TLSv1.3;
ssl_ciphers  HIGH:!aNULL:!MD5;

location/{
proxy_pass http://localhost:8080; # 代理到你的应用}
}


Nginx性能优化

1. Gzip 压缩

启用 Gzip 可以显著减小文件大小,加快传输速度。

http{gzipon;gzip_varyon;gzip_comp_level5;# 压缩级别 1-9gzip_types text/plain text/css application/json application/javascript;}

2. 错误页面

配置自定义错误页面,提供更好的用户体验。

server{
error_page404/404.html;
error_page500502503504/50x.html;

location=/404.html{
root/usr/share/nginx/html;internal;# 只能被 Nginx 内部重定向访问}# ...}

文章来源:mikechen.cc

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部