Web服务器是互联网应用的基石,它负责接收客户端(如浏览器)的HTTP请求,并返回相应的网页资源或数据,无论是搭建个人博客、企业官网,还是开发Web应用,掌握Web服务器的安装与配置都是一项核心技能,本文将以主流的Linux操作系统为基础,介绍Apache和Nginx两款Web服务器的安装与配置流程,涵盖环境准备、核心配置、安全加固等关键环节,帮助读者快速搭建稳定、高效的Web服务环境。

安装前的环境准备
在安装Web服务器之前,需确保系统环境满足基本要求,并完成必要的初始化配置。
操作系统与硬件要求
推荐使用Ubuntu 20.04+/CentOS 7+等稳定版本的Linux系统,硬件配置需根据业务需求调整:个人测试环境至少1核CPU、1GB内存、20GB磁盘空间;生产环境建议2核以上CPU、4GB以上内存、SSD硬盘以提升性能。
网络环境配置
确保服务器拥有静态IP地址(或通过DHCP保留固定IP),并配置好域名解析(若需通过域名访问),关闭防火墙或开放必要端口(HTTP默认80端口、HTTPS默认443端口),以Ubuntu为例,可通过sudo ufw allow 80/tcp和sudo ufw allow 443/tcp开放端口。
依赖包安装
编译安装Web服务器时需依赖开发工具和基础库,可通过包管理器安装,Ubuntu系统执行:
sudo apt update && sudo apt install -y build-essential libpcre3-dev libssl-dev
CentOS系统执行:
sudo yum groupinstall -y "Development Tools" && sudo yum install -y pcre-devel openssl-devel
Web服务器安装
Apache和Nginx是当前最流行的开源Web服务器,前者以模块化和稳定性著称,后者以高性能和反向代理能力见长,以下分别介绍两者的安装方法。
Apache安装
Apache支持包管理器和源码编译两种安装方式,推荐使用包管理器简化操作。
- Ubuntu系统:
sudo apt update && sudo apt install -y apache2
- CentOS系统:
sudo yum install -y httpd
安装完成后,启动服务并设置开机自启:
# Ubuntu sudo systemctl start apache2 && sudo systemctl enable apache2 # CentOS sudo systemctl start httpd && sudo systemctl enable httpd
通过浏览器访问服务器IP,若看到“It works!”页面,说明安装成功。
Nginx安装
Nginx的安装方式与Apache类似,同样推荐包管理器。
- Ubuntu系统:
sudo apt update && sudo apt install -y nginx
- CentOS系统:
sudo yum install -y epel-release && sudo yum install -y nginx
启动服务并设置开机自启:

sudo systemctl start nginx && sudo systemctl enable nginx
访问服务器IP,若看到Nginx欢迎页面,即表示安装成功。
核心配置详解
安装完成后,需对Web服务器进行核心配置,以满足业务需求,如虚拟主机、日志管理、性能优化等。
基本配置
Apache配置文件:主配置文件为
/etc/apache2/apache2.conf(Ubuntu)或/etc/httpd/conf/httpd.conf(CentOS),核心参数包括:Listen 80:监听端口,可修改为其他端口(如8080);DocumentRoot /var/www/html:网站根目录,存放网页文件;ServerName localhost:服务器域名或IP,建议配置为实际访问地址。
修改后需执行sudo apache2ctl configtest(Ubuntu)或sudo apachectl configtest(CentOS)检查语法,无误后重启服务。
Nginx配置文件:主配置文件为
/etc/nginx/nginx.conf,核心参数包括:listen 80;:监听端口;root /var/www/html;:网站根目录;server_name localhost;:服务器域名或IP。
语法检查命令为sudo nginx -t,重启服务用sudo systemctl restart nginx。
虚拟主机配置
虚拟主机允许在同一台服务器上托管多个网站,通过域名区分。
Apache虚拟主机(以Ubuntu为例):
在/etc/apache2/sites-available/目录下创建配置文件(如example.com.conf如下:<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>创建网站根目录并设置权限:
sudo mkdir -p /var/www/example.com && sudo chown -R www-data:www-data /var/www/example.com
启用虚拟主机:
sudo a2ensite example.com.conf,重启服务即可。Nginx虚拟主机:
在/etc/nginx/conf.d/目录下创建配置文件(如example.com.conf如下:server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } }同样需创建网站根目录并设置权限,重启服务后生效。
日志管理
Web服务器会记录访问日志(客户端请求信息)和错误日志(服务运行错误),通过日志可排查问题、分析流量。

- Apache日志:默认访问日志为
/var/log/apache2/access.log,错误日志为/var/log/apache2/error.log; - Nginx日志:默认访问日志为
/var/log/nginx/access.log,错误日志为/var/log/nginx/error.log。
可通过CustomLog(Apache)或access_log(Nginx)指令自定义日志格式,如记录IP、访问时间、请求状态等。
安全加固措施
Web服务器作为互联网入口,易受攻击,需从多方面加固安全防护。
运行用户隔离
避免使用root用户运行Web服务,降低权限泄露风险,Apache默认运行用户为www-data,Nginx为nginx,可通过ps -ef | grep apache2/nginx查看。
SSL证书配置
启用HTTPS加密传输,保护数据安全,可通过Let’s Encrypt免费获取证书,以Nginx为例:
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com
执行后会自动修改Nginx配置,启用443端口和SSL证书。
禁用不必要模块
Apache和Nginx均支持模块化加载,禁用未使用的模块可减少攻击面,Apache可通过sudo a2dismod autoindex禁用目录列表功能;Nginx可通过注释或删除/etc/nginx/conf.d/下的未使用配置文件。
定期更新
及时更新Web服务器软件和系统补丁,修复已知漏洞,Ubuntu可通过sudo apt upgrade更新,CentOS通过sudo yum update更新。
常见问题解决
访问网站显示“403 Forbidden”错误
原因:通常是网站根目录权限不足,或SELinux(CentOS)策略限制。
解决:
- 检查目录权限:
sudo chmod -R 755 /var/www/example.com; - 若为CentOS,检查SELinux状态:
getsebool -a | grep httpd,若httpd_can_network_connect为off,执行sudo setsebool -P httpd_can_network_connect=1。
端口被占用导致服务启动失败
原因:80端口被其他程序占用(如Apache、Nginx或其他服务)。
解决:
- 查看端口占用:
sudo netstat -tlnp | grep 80; - 终止占用进程或修改Web服务器监听端口(如将Apache的
Listen 80改为Listen 8080)。
FAQs
Q1:Apache和Nginx如何选择?
A1:Apache适合处理动态内容(如PHP),模块丰富,配置灵活;Nginx擅长处理静态资源和高并发请求,反向代理性能优异,若网站以静态页面为主或需反向代理,优先选Nginx;若依赖PHP等动态语言且需复杂模块,可选Apache。
Q2:如何配置Web服务器支持PHP?
A2:以Nginx为例,需安装PHP-FPM:
- Ubuntu:
sudo apt install -y php-fpm php-mysql;CentOS:sudo yum install -y php-fpm php-mysql; - 修改Nginx配置文件,在
location /块中添加:fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 路径根据PHP版本调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;
- 重启Nginx和PHP-FPM服务即可。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复