
一、安装依赖
sudo dnf install -y gcc gcc-c++ make \ pcre pcre-devel zlib zlib-devel \ openssl openssl-devel \ wget tar |
二、下载并解压 Nginx(如果尚未完成)
wget http: //nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx- 1.24 . 0 .tar.gz cd nginx- 1.24 . 0 |
三、编译安装
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_stub_status_module |
make -j$(nproc) sudo make install |
四、添加系统服务(便于启动)
创建 systemd 服务文件:
sudo vi /usr/lib/systemd/system/nginx.service |
内容如下:
[Unit] Description=The NGINX HTTP and reverse proxy server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp= true [Install] WantedBy=multi-user.target |
保存并重载 systemd:
sudo systemctl daemon-reexec sudo systemctl daemon-reload |
1、注:(添加systemd服务)不是必须的,但
√ 推荐添加,尤其是在生产环境或你希望用 systemctl
命令统一管理服务时;
X 如果你只是临时测试,或者自己写脚本启动/停止 Nginx,可以不做这一步。
如果不加 systemd 服务,你的启动/停止操作方式如下:
启动 Nginx:
/usr/local/nginx/sbin/nginx |
重载配置:
/usr/local/nginx/sbin/nginx -s reload |
停止 Nginx:
/usr/local/nginx/sbin/nginx -s quit |
如果加上 systemd 服务,你就可以:
sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx sudo systemctl enable nginx # 设置开机启动 |
并且可以通过:
sudo systemctl status nginx |
查看运行状态,也更方便被监控工具接管(如 Prometheus node exporter、systemd 监控等)。
2、nginx.service的内容是固定写法吗
不是完全固定,但结构是有规范的,这是符合 systemd 单元文件格式的标准写法。
你可以根据实际安装路径、需求进行微调,但整体框架如下:
最小工作模板:
[Unit] Description=NGINX Server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp= true [Install] WantedBy=multi-user.target |

3、关于ExecStart、ExecReload、ExecStop设置问题
这些路径必须是 完整绝对路径
也就是说,这些命令不能是:
这样 systemd 会找不到路径。
而应该是:
ExecStart=/usr/local/nginx/sbin/nginx |

4、为什么必须用绝对路径
这是因为 systemd 在执行这些命令时不会继承你的 PATH 环境变量(不像你在终端里那样可以直接运行 nginx),所以必须写完整路径,否则会报:
ExecStart=nginx failed: No such file or directory |
5、如何获取正确路径:
你可以用以下命令查看 nginx 实际安装在哪:
或者
五、启动并设置开机自启
sudo systemctl start nginx sudo systemctl enable nginx |
六、配置文件路径
/usr/local/nginx/conf/nginx.conf |
七、防火墙设置(如启用 firewalld)
sudo firewall-cmd --permanent --add-port= 80 /tcp sudo firewall-cmd --permanent --add-port= 443 /tcp sudo firewall-cmd --reload |
八、验证
或通过浏览器访问服务器公网 IP,看到 Welcome to nginx!
即说明部署成功。

九、请求转发配置
如果想将请求转发到本地目录下的文件并将这个内容返回出去,比如http://你的Nginx公网地址/home/test/1
vi /usr/local/nginx/conf/nginx.conf |
进去后通过 /location 找到目标位置,并添加location,location可以添加多个,下面是针对这个请求的具体配置
location / { #这个是配置里自带的,不需要修改,直接在这个节点下面添加一个新的location即可 root html; index index.html index.htm; } location /home/test/ { alias /home/test/; autoindex on; # 可选,允许目录浏览 default_type application/octet-stream; add_header Access-Control-Allow-Origin *; # 跨域支持(可选) } |
配置添加完需要重新加载Nginx才会生效
/usr/local/nginx/sbin/nginx -s reload |
现在就能访问这个地址了: http://你的Nginx公网地址/home/test/1