当前位置:网站首页 >  攻略

十分钟搞定Linux下Nginx搭建HTTP网站全流程

时间:2026年06月12日 14:07:20 来源:易频IT社区

环境准备与依赖安装

本文操作环境基于 CentOS 7.x 系统,如果是 Ubuntu 系统,命令中的 yum 需替换为 apt。我们需要确保系统环境干净并安装 Nginx。

执行以下命令添加 EPEL 源并安装 Nginx。EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 社区打造,为 RHEL 及衍生发行版(如 CentOS)提供高质量软件包的项目。

1. 安装 EPEL 源:

```bash yum install epel-release -y ```

2. 安装 Nginx:

```bash yum install nginx -y ```

3. 确认安装版本:

```bash nginx -v ```

如果输出了 Nginx 的版本号,说明安装成功。此时不要启动服务,我们需要先准备好网站文件和配置。

构建网站目录与静态资源

为了规范管理,我们不建议直接使用 Nginx 默认的目录,而是在根目录下创建一个专门的 Web 目录。假设我们的域名是 example.com,我们创建对应的目录结构。

1. 创建网站根目录:

```bash mkdir -p /data/www/example.com ```

2. 创建简单的测试首页:

使用 vimecho 命令生成一个 index.html 文件。为了测试方便,内容越简单越好。

```bash echo "HTTP Server Success" > /data/www/example.com/index.html ```

3. 设置目录权限:

这是新手最容易踩坑的地方。Nginx 默认以 nginx 用户运行,必须确保该用户对网站目录有读取权限。

```bash chown -R nginx:nginx /data/www/example.com chmod -R 755 /data/www/example.com ```

Nginx核心配置详解

Nginx 的主配置文件位于 /etc/nginx/nginx.conf。为了保持配置清晰,我们不建议直接修改主文件,而是在 /etc/nginx/conf.d/ 目录下创建独立的配置文件,Nginx 会自动加载该目录下所有 .conf 结尾的文件。

1. 备份默认配置(可选但推荐):

```bash cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak ```

2. 创建站点配置文件:

```bash vim /etc/nginx/conf.d/example.com.conf ```

3. 写入以下完整配置:

请直接复制以下内容,注意将 server_name 替换为你实际的域名或服务器 IP。如果暂时没有域名,请使用下划线 _ 作为默认匹配。

```nginx server { 监听 80 端口,HTTP 协议默认端口 listen 80; 你的域名,多个域名用空格隔开 server_name example.com www.example.com; 字符集 charset utf-8; 网站根目录,即刚才创建的目录 root /data/www/example.com; 默认首页文件 index index.html index.htm; 访问日志配置 access_log /var/log/nginx/example.com.access.log main; error_log /var/log/nginx/example.com.error.log; location / { 尝试按顺序寻找文件,如果找不到则返回 404 try_files $uri $uri/ =404; } 禁止访问 .htaccess 或 .htpasswd 等隐藏文件 location ~ /\. { deny all; } } ```

4. 检查配置文件语法:

在启动服务前,必须使用 -t 参数检查配置文件是否存在语法错误。这是防止服务启动失败的关键步骤。

```bash nginx -t ```

十分钟搞定Linux下Nginx搭建HTTP网站全流程

如果输出 syntax is oktest is successful,则配置无误。如果有报错,请根据提示检查文件路径或括号匹配情况。

防火墙与SELinux策略配置

配置写好并检查通过后,如果直接启动,外部浏览器往往无法访问。这是因为 CentOS 默认开启了 Firewalld 防火墙和 SELinux 安全策略。

1. 配置 Firewalld 防火墙:

我们需要开放 HTTP 服务的 80 端口。使用 firewall-cmd 进行动态管理。

```bash 开放 80 端口(永久生效) firewall-cmd --permanent --add-service=http 或者开放指定端口 firewall-cmd --permanent --add-port=80/tcp 重载防火墙规则使配置生效 firewall-cmd --reload ```

2. 配置 SELinux 上下文:

即使文件权限是 755,SELinux 也可能阻止 Nginx 读取非标准目录(如 /data/www)下的文件。我们需要修改目录的安全上下文。

```bash 将目录标记为 httpd 内容可读 chcon -R -t httpd_sys_content_t /data/www/example.com 如果需要允许写入(如上传功能),还需要执行: chcon -R -t httpd_sys_rw_content_t /data/www/example.com ```

服务启动与端口验证

完成上述所有步骤后,即可启动 Nginx 服务。

1. 启动 Nginx 并设置开机自启:

```bash systemctl start nginx systemctl enable nginx ```

2. 检查服务运行状态:

```bash systemctl status nginx ```

状态中应显示 Active: active (running),绿色的 running 表示服务正常运行。

3. 验证端口监听:

使用 netstatss 命令查看 80 端口是否被 Nginx 占用。

```bash ss -tlnp | grep :80 ```

输出结果中应包含 nginx 进程信息,证明 80 端口已正确监听。

浏览器访问与本地测试

1. 本机 Curl 测试:

在服务器内部使用 curl 命令测试,排除网络因素。

```bash curl -I http://localhost ```

正常情况下应返回 HTTP/1.1 200 OK

2. 浏览器访问:

打开本地电脑的浏览器,在地址栏输入 http://服务器IP地址http://example.com(如果已配置域名解析)。如果一切正常,你将看到之前写入的 HTTP Server Success 标题。

常见报错与排查方案

在搭建过程中,如果遇到问题,请按照以下思路排查:

  • 403 Forbidden: 通常是权限问题。检查 chown 是否执行,或者 SELinux 是否阻止。可以临时关闭 SELinux 测试:setenforce 0
  • Connection Refused: 服务未启动或端口未开放。检查 systemctl status nginxfirewall-cmd 状态。
  • 404 Not Found: 配置文件中的 root 路径写错,或者 index.html 文件名不匹配。
  • 配置不生效: 修改配置后必须执行 nginx -s reload 重载配置,不要只重启服务。
标签 网站HTTP

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图