
 
一、安装依赖
 
| sudodnf 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