web服务器
Web 服务是我们最常接触的服务之一。无论是浏览网页、在线购物,还是观看视频,背后都离不开 Web 服务器的支持。今天,我们就来深入探讨如何使用 Nginx 这款轻量级、高性能的 Web 服务器软件,搭建属于自己的网站。
什么是 Web 服务器?
简单来说,Web 服务器就像是一个“网络服务员”,它接收来自用户浏览器的请求,然后将相应的网页内容返回给用户。我们日常生活中访问的每一个网站,都是由 Web 服务器提供服务的。
常见的 Web 服务程序
在开始之前,我们先了解几种常见的 Web 服务器软件:
- IIS:Windows 系统自带的 Web 服务程序,图形化界面,易于管理
- Apache:历史悠久,功能丰富,市场占有率很高
- Nginx:轻量级,性能优异,特别适合高并发场景
- Tomcat:主要用于运行 Java Web 应用
在 Linux 环境中,Nginx 和 Apache 是最常用的选择。今天我们就重点介绍 Nginx。
为什么选择 Nginx?
Nginx 有以下几个突出优点:
1. 资源占用少:在同等硬件配置下能服务更多用户
2. 高并发能力强:采用事件驱动架构,能同时处理大量连接
3. 稳定性好:即使在高负载下也能稳定运行
4. 配置灵活:支持各种复杂的网站需求
开始部署 Nginx
环境准备
在开始安装前,我们需要进行一些准备工作:
# 关闭 SELinux(临时)
setenforce 0
# 停止防火墙
systemctl stop firewalld
# 禁用防火墙开机启动
systemctl disable firewalld
安装 Nginx
在 CentOS/RHEL 系统上,安装 Nginx 非常简单:
yum install nginx -y
安装完成后,启动 Nginx 服务:
systemctl start nginx
systemctl enable nginx # 设置开机自启
systemctl status nginx # 检查服务状态
如果看到 Active: active (running) 字样,说明 Nginx 已经成功启动。
测试访问
在浏览器中输入你的服务器 IP 地址,如果看到 Nginx 的欢迎页面,说明安装成功!
Nginx 常用命令
# 启动 Nginx
systemctl start nginx
nginx# 停止 Nginx
systemctl stop nginx
nginx -s stop # 强制停止
nginx -s quit # 优雅停止(处理完当前请求后停止)# 重启服务
systemctl restart nginx
nginx -s reload # 重新加载配置(不停止服务)# 检查状态
systemctl status nginx
nginx -t # 检查配置文件语法
Nginx 配置文件详解
Nginx 的配置文件位于 `/etc/nginx/nginx.conf`,理解这个文件的结构很重要。
配置文件结构
Nginx 配置文件采用层级结构,主要包含以下几个部分:
- main:全局配置,影响所有其他部分
- events:事件处理相关的配置
- http:HTTP 服务器相关配置
- server:虚拟主机配置(可以多个)
- location:URI 匹配配置
主要配置段说明
# 全局配置
user nginx; # 运行用户
worker_processes auto; # 工作进程数(通常等于 CPU 核心数)
error_log /var/log/nginx/error.log; # 错误日志位置# 事件模块配置
events {worker_connections 1024; # 每个工作进程的最大连接数
}# HTTP 服务器配置
http {include /etc/nginx/mime.types; # 文件类型映射default_type application/octet-stream; # 默认文件类型# 日志格式定义log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main; # 访问日志sendfile on; # 开启高效文件传输模式keepalive_timeout 65; # 保持连接超时时间# 虚拟主机配置server {listen 80; # 监听端口server_name _; # 域名(_ 表示匹配所有)root /usr/share/nginx/html; # 网站根目录# URL 位置配置location / {index index.html index.htm; # 默认首页文件}# 错误页面配置error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
}
搭建你的第一个网站:
创建网站目录
默认情况下,Nginx 的网页文件存放在 `/usr/share/nginx/html`,但我们可以创建自定义目录
# 创建网站目录
mkdir -p /www/zy# 设置权限
chmod -R 755 /www/zy
准备网站内容
将你的网页文件上传到 `/www/zy` 目录,或者简单创建一个测试页面:
echo "欢迎来到我的网站!" > /www/zy/index.html
修改 Nginx 配置
编辑 Nginx 配置文件,指定新的网站根目录:
vim /etc/nginx/nginx.conf
找到 server 部分,修改 root 指令:
server {listen 80;server_name _;root /www/zy; # 修改为你的网站目录index index.html index.htm;
}
重启 Nginx 并测试
# 检查配置语法
nginx -t# 重启服务
systemctl restart ngin
现在在浏览器中访问服务器 IP,应该能看到你创建的网页内容了!
虚拟主机功能
虚拟主机允许在一台服务器上运行多个网站,有三种实现方式:
1. 基于 IP 的虚拟主机
为服务器配置多个 IP 地址,每个 IP 对应一个网站:
添加额外 IP 地址
nmcli c modify ens32 +ipv4.addresses 192.168.48.150/24
nmcli c reload
nmcli c up ens32
然后在 Nginx 配置中为每个 IP 创建 server 块:
server {listen 80;server_name 192.168.48.150;root /www/ip150;
}server {listen 80;server_name 192.168.48.151;root /www/ip151;
}
2. 基于端口的虚拟主机
使用不同端口访问不同网站:
server {listen 5111;server_name _;root /www/port5111;
}server {listen 5222;server_name _;root /www/port5222;
}
访问时需要在 URL 中指定端口:`http://服务器IP:5111`
3. 基于域名的虚拟主机(最常用)
通过不同域名访问同一服务器上的不同网站:
server {listen 80;server_name www.zy.com;root /www/zy;
}server {listen 80;server_name www.sxhkt.com;root /www/sxhkt;
}
需要在客户端 hosts 文件中添加域名解析:
192.168.48.130 www.zy.com
192.168.48.130 www.sxhkt.com
进阶功能:HTTPS 网站搭建
为什么需要 HTTPS?
HTTPS = HTTP + SSL/TLS,通过加密通信内容,防止数据被窃听或篡改。
生成 SSL 证书
首先需要为网站生成 SSL 证书和私钥:
# 生成私钥(带密码保护)
openssl genrsa -aes128 2048 > /etc/nginx/zy.key# 生成证书
openssl req -utf8 -new -key /etc/nginx/zy.key -x509 -days 365 -out /etc/nginx/zy.crt# 移除私钥密码(可选,便于自动加载)
openssl rsa -in zy.key.org -out zy.key
配置 HTTPS 网站
server {listen 443 ssl http2;server_name 192.168.48.130;root /www/zy;# SSL 配置ssl_certificate /etc/nginx/zy.crt;ssl_certificate_key /etc/nginx/zy.key;
}# HTTP 重定向到 HTTPS
server {listen 80;server_name 192.168.48.130;return 301 https://$server_name$request_uri;
}
实用功能:目录列表和密码保护
开启目录列表
让用户能够浏览服务器上的文件目录:
location / {autoindex on; # 开启目录列表autoindex_exact_size on; # 显示文件确切大小autoindex_localtime on; # 显示服务器时间charset utf-8,gbk; # 支持中文文件名
}
设置密码保护
为网站或特定目录添加访问密码:
# 安装密码工具
yum install httpd-tools -y# 创建密码文件
htpasswd -c /etc/nginx/passwd username
在 Nginx 配置中添加:
location / {auth_basic "请输入用户名和密码";auth_basic_user_file /etc/nginx/passwd;
}
常见问题排查
1. 无法访问网站
- 检查 Nginx 服务状态:`systemctl status nginx`
- 检查防火墙设置
- 查看错误日志:`tail -f /var/log/nginx/error.log`
2. 权限问题
- 确保 Nginx 用户对网站目录有读取权限
- 检查 SELinux 状态和设置
3. 配置错误
- 使用 `nginx -t` 检查配置文件语法
- 每次修改配置后记得重启或重载 Nginx
总结:
- Nginx 的基本概念和优势
- 如何安装和配置 Nginx
- 搭建静态网站的方法
- 虚拟主机的三种实现方式
- HTTPS 网站的配置
- 常用的 Nginx 功能和优化技巧
