CentOS LNMP 域名解析与 Nginx 配置
一、整体思路
- 在域名注册商或云解析控制台添加 DNS 记录(如 A 记录 指向服务器公网 IP),让域名可解析到服务器。
- 在服务器上配置 Nginx 虚拟主机,用 server_name 绑定你的域名,并指向网站根目录。
- 打开防火墙 80/443 端口,重载 Nginx,测试访问。若需加密访问,可进一步配置 HTTPS/SSL。
二、步骤一 配置 DNS 解析
- 添加记录(示例)
- 记录类型:A
- 主机记录:@(根域)与 www(常见)
- 记录值:你的服务器公网 IPv4
- TTL:默认或按需(如 600 秒)
- 如需通配子域,可添加:
- 记录类型:CNAME
- 主机记录:*
- 记录值:@ 或你的主域名(如 example.com)
- 生效时间
- 解析修改通常需要 数分钟到数小时 全球生效,常见为 ~10 分钟;可用命令行测试是否指向正确 IP。
- 常用测试
- nslookup example.com
- dig example.com A +short
- ping example.com(可能被禁 ping,仅作连通性参考)
三、步骤二 配置 Nginx 虚拟主机
- 新建站点配置(推荐拆分到 /etc/nginx/conf.d/)
- 示例:sudo vim /etc/nginx/conf.d/example.com.conf
- 配置示例(HTTP)
- 将 example.com 与 www.example.com 都指向同一站点目录
- 将 /var/www/example.com 替换为你的实际网站目录
- 确认 PHP-FPM 监听方式与路径与系统一致(常见为 /run/php-fpm/www.sock 或 127.0.0.1:9000)
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 根据实际的 PHP-FPM 监听方式二选一
# 1) Unix socket(常见于 CentOS 的 php-fpm 包)
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php-fpm/www.sock;
}
# 2) TCP 端口(如 127.0.0.1:9000)
# location ~ \.php$ {
# include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_pass 127.0.0.1:9000;
# }
location ~ /\.ht {
deny all;
}
}
- 创建目录与权限
- sudo mkdir -p /var/www/example.com
- sudo chown -R nginx:nginx /var/www/example.com
- sudo chmod -R 755 /var/www/example.com
- 检查并重载 Nginx
- sudo nginx -t
- sudo systemctl reload nginx
- 可选:多站点
- 为不同域名分别创建 server { server_name xxx; root … } 的配置文件,放在 /etc/nginx/conf.d/ 下并分别重载 Nginx。
四、步骤三 防火墙与 HTTPS
- 防火墙放行
- sudo firewall-cmd --permanent --zone=public --add-service=http
- sudo firewall-cmd --permanent --zone=public --add-service=https
- sudo firewall-cmd --reload
- 申请并配置免费 SSL(Let’s Encrypt/certbot)
- 安装:sudo yum install certbot python2-certbot-nginx
- 签发并自动配置 Nginx:sudo certbot --nginx -d example.com -d www.example.com
- 按提示选择是否重定向 HTTP→HTTPS,证书到期可自动续期。
五、快速验证与常见问题
- 验证清单
- DNS 是否正确:nslookup/ping 返回你的服务器 IP
- 端口是否开放:sudo firewall-cmd --list-ports 应包含 80/tcp 与(配置后)443/tcp
- Nginx 是否生效:sudo nginx -t 无报错;访问 http://example.com 显示站点内容
- PHP 是否正常:创建 /var/www/example.com/index.php,内容为
- 常见问题
- 解析未生效:等待 TTL 过期;检查是否为 A 记录 且值正确;用 nslookup/dig 复核
- 访问被拒绝或超时:检查云服务器安全组/本机防火墙是否放行 80/443
- Nginx 启动失败:执行 nginx -t 定位语法或路径错误;查看 /var/log/nginx/error.log
- 国内服务器访问异常:域名需完成 ICP 备案 后再上线使用。