说实话,之前一直用 Tomcat 跑项目,但最近手里的活并发量上来了,同事推荐我试试 Nginx。搜了一圈教程,发现大多数写得云里雾里的,不是缺步骤就是跳过重点。我干脆自己动手装了一遍,Windows 和 Linux 两边都试了,把踩过的坑和关键步骤记下来,给同样想用 Nginx 的朋友做个参考。
先聊聊 Nginx 是什么
Nginx 是个开源的高性能 Web 服务器,跟 Apache 比,它走的是事件驱动异步架构,占用的资源少很多,高并发场景下表现确实好。它还能当反向代理、负载均衡器、HTTP 缓存服务器用,网站托管、API 网关、静态资源分发这些场景都用得上。我一开始也以为它就是普通 Web 服务器,后来才发现它能干的事挺多。
下载地址放在文末,稳定版和主线版都有,都是官网原版,放心用。稳定版适合生产环境,主线版功能新但更新频繁,我自己用的是稳定版。
Windows 上装 Nginx,比想象中简单
Nginx 在 Windows 上是绿色软件,不需要安装程序,解压就能用。我下载的是 zip 压缩包,解压到了 D:\nginx,建议别放系统盘也别放带中文的路径,省得后面出幺蛾子。
解压完直接双击 nginx.exe,屏幕上会闪过一个黑窗口,一开始我还以为出错了,后来在任务管理器里看到 nginx 进程在跑才放心。
浏览器打开 http://localhost,看到 "Welcome to nginx!" 页面就是成功了。
停止 nginx 有两个命令:nginx -s stop 是强制停止,有请求也会直接掐断;nginx -s quit 是优雅停止,会等当前请求处理完再退出。生产环境推荐用 quit。
改 nginx.conf 这一步有点反直觉
nginx 的所有行为都靠 conf/nginx.conf 文件控制。默认配置展示欢迎页面,但你用 nginx 肯定不是来看欢迎页的。
用记事本或 VS Code 打开 nginx.conf,结构是分层嵌套的:最外层是 http 块,里面是 server 块(站点配置),server 块里又有 location 块(路径匹配)。初学者最需要关心 server 块里几个配置项:
listen指定端口,默认 80server_name填域名,本地测试用 localhost 或 127.0.0.1root指定网站文件的存放目录index设置默认首页文件名
比如网站文件在 D 盘 www 文件夹,配置就是 server { listen 80; server_name localhost; root D:/www; index index.html; }。
改完配置文件不能直接双击 nginx.exe,那样会启动两个进程导致冲突。正确流程分两步:先做语法检查,命令行进 nginx 目录执行 nginx -t,返回 "syntax is ok" 和 "test is successful" 说明写对了;然后执行 nginx -s reload 重载配置,不会中断正在处理的请求。
Linux 上源码编译装 Nginx
Linux 上我推荐源码编译方式,虽然比包管理器多几个步骤,但可以按需选模块、自定义安装路径,灵活性高很多。
先装编译依赖。Ubuntu / Debian 用:
sudo apt update && sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev -y
CentOS / RHEL / Rocky 用:
sudo yum groupinstall "Development Tools" && sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
这些依赖缺一个都会编译报错,别问我是怎么知道的。
下载源码包上传到服务器,解压进目录:
tar -zxvf nginx-1.30.4.tar.gz && cd nginx-1.30.4
然后配置编译参数,这是最关键的一步:
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-http_gzip_static_module --with-stream
各参数含义:--prefix 指定安装目录,默认是 /usr/local/nginx;--with-http_ssl_module 启用 SSL 支持,上 HTTPS 必须开;--with-http_v2_module 启用 HTTP/2;--with-http_stub_status_module 提供监控页面;--with-stream 开启 TCP/UDP 代理。
配置完编译安装:
make && sudo make install
编译过程看服务器性能,一般 1-3 分钟。出错通常是依赖没装全,补装后重新跑 ./configure 就行。
启动验证:
sudo /usr/local/nginx/sbin/nginx
curl http://localhost
看到 "Welcome to nginx!" 就是装好了。
没显示的话查防火墙,或者用 ps aux | grep nginx 看进程是否正常。
端口被占用这个坑
新手最容易碰到的问题就是端口被占用。启动时报 "address already in use" 说明 80 端口被占了。用 sudo lsof -i:80 或 sudo netstat -tlnp | grep 80 查看是哪个程序在占用,关掉冲突程序,或者改 nginx 配置文件里的端口号。
写在最后
Nginx 装上之后,我拿它跑了个静态站,确实比之前用的轻量很多。源码编译的方式虽然步骤多,但胜在灵活,能按需选模块,自己也能理解 nginx 的工作机制。不管是新手还是老手,按上面步骤一步步来,基本不会有大问题。
为了方便大家下载,我已经给大家整理好了资源。资源链接放在下面,自取就好,如果链接失效,可以在评论区留言,我看到了会及时更新。