背景
在 Rocky Linux 9 上部署一个静态站点,使用 Nginx 作为 Web 服务器。整个过程涉及软件安装、配置编写、服务管理等环节。
安装
dnf install -y nginx
nginx -v
配置文件
站点配置放在 /etc/nginx/conf.d/ 目录下:
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(jpg|png|css|js)$ {
expires 7d;
add_header Cache-Control "public";
}
}
踩坑记录
1. SELinux 拦截
如果 SELinux 是 Enforcing 状态,Nginx 访问 /var/www/ 外的目录会被拒绝:
# 查看状态
getenforce
# 方案一:设置目录上下文
semanage fcontext -a -t httpd_sys_content_t "/var/www/example(/.*)?"
restorecon -Rv /var/www/example
# 方案二:放行 Nginx 访问网络
setsebool -P httpd_can_network_connect 1
2. 防火墙与安全组
服务器内部防火墙开放了端口,但云厂商的安全组是独立的一层,必须单独放行,否则公网访问不了。
# firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
# 验证端口监听
ss -tunlp | grep :80
性能参考
静态页面在回环压测下:
| 并发 | QPS | P99 |
|---|---|---|
| 100 | 约 20000 | 14ms |
实际公网性能瓶颈通常是带宽,而不是 Nginx 本身。17KB 的页面在 10Mbps 带宽下理论上限约 70 QPS。
小结
- 静态站点用 Nginx 托管,资源消耗极低,1.6G 内存的机器绰绰有余
- SELinux 和云安全组是最容易忽略的两处
- 图片多的站点建议接 CDN,比升带宽划算