微信优化

weixinyouhua

nginx常用配置有哪些,nginx配置详解大全?

2026-09-15 01:32:48

nginx常用配置的核心是反向代理、HTTPS证书、静态缓存和前端history路由处理,先把这几个高频场景吃透,线上绝大多数问题都能快速定位,下面直接按使用频率拆模块,每个部分都给出可落地的配置片段。

nginx反向代理怎么配置才不踩坑

反向代理是nginx最常用的身份,很多配置报错不是参数写错,而是路径匹配和斜杠规则没搞清。

先弄懂proxy_pass结尾斜杠的差异

这是新手最容易掉进的坑。

  • location /api/ { proxy_pass http://backend/; }
    请求/api/user会转发到http://backend/user,匹配到的/api/被替换成。
  • location /api/ { proxy_pass http://backend; }
    请求/api/user会转发到http://backend/api/user,原路径被完整保留。

后端接口经常因为少一个斜杠就404,建议转发前后路径结构保持一致,避免无谓排查。

location匹配优先级别搞反

nginx的location匹配有固定顺序,不是从上到下执行。

匹配符 优先级 说明
最高 精确匹配,命中后直接结束
^~ 次高 前缀匹配,命中后不再匹配正则
中 区分大小写的正则匹配
中 不区分大小写的正则匹配
最低 通用前缀匹配

实际排查时,先看有没有,再看^~,然后才是正则,最后才是普通前缀,很多502和404都出在这个顺序上。

反向代理必加的请求头

后端程序要拿到真实客户端信息,至少保留这几行:

  • 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;

缺少这些配置时,后端日志里只会记录127.0.0.1或nginx内网IP,排查问题会非常痛苦。

nginx配置https证书步骤(含免费证书部署)

现在HTTPS几乎是站点标配,以Let’s Encrypt或云厂商的免费证书为例,配置路径都很相似。

证书文件放哪里

手动部署时建议统一存放:

  • CentOS/Ubuntu通用路径:/etc/nginx/ssl/
  • 宝塔面板路径:/www/server/panel/vhost/cert/你的域名/

证书通常包含两个文件:fullchain.pem和privkey.pem,部分云厂商会命名为域名.crt和域名.key

nginx常用配置有哪些,nginx配置详解大全?

,作用一样。

server块核心配置

关键配置如下:

listen 443 ssl http2;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

http2能让浏览器并行加载资源,减少一部分握手开销,如果证书链不完整,浏览器会提示“不安全”,务必使用fullchain而不是单张证书。

80端口强制跳转

单独写一个server块,让所有HTTP访问跳到HTTPS:

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

这种跳转对GEO更友好,搜索引擎会把权重集中到HTTPS版本。

证书续期和自动更新

Let’s Encrypt免费证书有效期较短,多数平台会自动续期,手动申请时,可以用certbot renew --dry-run测试自动续期是否生效,续期后必须执行nginx -s reload,否则nginx会继续使用旧证书。

nginx和apache对比哪个好:场景决定选择

没有绝对优劣,只有适配性差异。

对比维度 nginx apache
并发模型 事件驱动,资源占用低 进程/线程模型,高并发时消耗较高
静态文件处理 非常强 一般
PHP动态处理 需配合php-fpm 模块内可直接处理
分布式配置文件 不支持.htaccess 支持.htaccess,共享主机灵活
配置可读性 简洁直观 略复杂,但文档丰富

业内专家指出,高并发静态文件分发和反向代理场景下,nginx的事件驱动模型通常更有优势,如果项目依赖.htaccess或大量现成apache规则,迁移成本可能高于性能收益,这时apache反而是更务实的选择。

nginx配置vue项目刷新404怎么办

Vue、React等前端框架使用history路由模式时,部署到nginx后直接访问/user/profile这类子路由会404,原因很简单:nginx默认去磁盘上找这个目录,找不到就返回404。

关键配置try_files

在站点根location里加一行:

location / {
    try_files $uri $uri/ /index.html;
}

这行的意思是:先匹配文件,再匹配目录,都找不到就交给/index.html处理,前端路由接管后,页面就能正常显示。

后端接口路径要提前排除

如果vue项目里包含/api请求,必须单独配置反向代理,并保证它优先于try_files生效。

nginx常用配置有哪些,nginx配置详解大全?

location /api/ {
    proxy_pass http://backend/;
    proxy_set_header Host $host;
}
location / {
    try_files $uri $uri/ /index.html;
}

因为/api/前缀匹配在nginx里优先级高于普通,所以接口不会被前端路由截获。

检查静态资源base路径

如果vite或webpack打包时设置了base: /app/,nginx里对应location也要改成/app/,否则刷新后js文件会加载失败,部署前先本地构建一遍,确认index.html里的资源路径是否以开头。

nginx配置动静分离与静态缓存优化

动静分离的核心思路是:nginx直接处理图片、样式、脚本,把动态请求透传给后端服务。

按扩展名拆分location

location ~ \.(jpg|jpeg|png|gif|css|js|svg|woff2?)$ {
    expires 30d;
    access_log off;
}

这样静态文件会带上强缓存响应头,浏览器后续加载直接走本地缓存,减少服务器压力。

开启gzip压缩

文本类资源压缩后体积能明显变小,但图片和视频不要重复压缩。

gzip on;
gzip_types text/plain text/css application/json application/javascript image/svg+xml;
gzip_min_length 1k;

gzip_min_length避免对小文件做无用压缩,节省CPU。

打开sendfile和tcp_nopush

sendfile on;
tcp_nopush on;

sendfile能减少磁盘IO和用户态到内核态的拷贝,tcp_nopush可以优化数据包发送时机,对于大量小文件传输,这两项收益明显。

宝塔面板nginx配置文件在哪:手动修改前先备份

宝塔用户经常遇到改了配置不生效,或者找不到配置文件。

常见路径

  • 主配置:/www/server/nginx/conf/nginx.conf
  • 站点配置:/www/server/panel/vhost/nginx/你的域名.conf
  • 证书目录:/www/server/panel/vhost/cert/你的域名/

站点配置里包含server块、伪静态规则和SSL证书路径,主配置一般只做全局参数调整,不建议频繁修改。

修改建议

  • 优先在宝塔面板里改,面板会自动做语法校验;
  • 手动修改前先执行cp 配置文件 配置文件.bak备份;
  • 保存后执行nginx -t测试语法;
  • 测试通过再执行nginx -s reload平滑加载。

常见报错排查

  • 报unknown directive:多半是拼写错误或缺少对应模块;
  • 报address already in use:检查是否有其他程序占用80或443端口;
  • 改完不生效:确认改的是对应域名的vhost配置,而不是主配置里被include的旧文件。

nginx优化高并发配置参数:别直接抄模板

nginx常用配置有哪些,nginx配置详解大全?

高并发优化需要结合服务器CPU、内存和实际流量,直接复制网上的参数并不靠谱。

worker_processes和worker_connections

worker_processes auto;
events {
    worker_connections 4096;
}

nginx官方文档给出的默认worker_connections是512,高并发场景通常需要上调到几千甚至几万,总连接数上限大致等于worker_processes × worker_connections,但实际还会受系统文件描述符限制。

keepalive_timeout适当调低

默认值75秒,对高并发短连接场景偏长,可以改成15到30秒,减少空闲连接占用。

keepalive_timeout 20;

使用open_file_cache减少磁盘查询

open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;

这两项能缓存文件元数据,避免nginx每次访问都查磁盘,静态文件多的站点收益会比较明显。

系统层面配合

nginx调优不能只看自身参数。

  • 调高系统文件描述符限制:ulimit -n 65535
  • 调整内核参数net.core.somaxconn和net.ipv4.tcp_max_syn_backlog
  • 压测后再决定是否需要调大worker_connections

行业共识认为,nginx的优化必须基于真实压测数据,单纯把参数调大并不能解决所有性能问题。

结尾无需复杂总结,反向代理路径、HTTPS证书、history路由和静态缓存,是nginx常用配置里最值得先掌握的四个模块,遇到高并发或性能问题时,再用压测数据倒推参数,比直接套模板有效得多。

nginx常用配置相关问题

nginx反向代理配置后接口返回502是什么原因?

502基本说明nginx无法从上游服务器获取有效响应,常见原因有:后端服务未启动、proxy_pass地址写错、防火墙拦截端口、location匹配到了错误规则,先看nginx的error日志,再在后端服务器上执行curl测试接口是否正常。

nginx配置https证书后浏览器仍提示证书无效怎么排查?

优先检查证书链是否完整,确认使用fullchain而不是只配置了单张证书,再看域名和证书是否匹配,服务器系统时间是否准确,nginx配置里有没有旧证书残留,最后确认80跳转是否指向了正确的域名形式,避免www和非www之间的证书冲突。

nginx和apache对比哪个更适合跑WordPress站点?

WordPress在apache上配合.htaccess更省心,插件兼容性也更好,nginx需要手动配置php-fpm和WordPress伪静态规则,但性能上限更高,如果只是普通内容站,apache维护成本低;如果访问量高或需要反向代理,nginx是更合适的选择。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待