服务器测评网
我们一直在努力

lnmp环境下如何配置多个域名解析与虚拟主机?

在Linux服务器环境中,LNMP(Nginx + MySQL + PHP)组合因其高性能、稳定性和轻量级特性,被广泛应用于网站部署,当需要在同一台服务器上托管多个网站时,合理配置多域名就显得尤为重要,本文将详细介绍LNMP环境下多域名的配置方法,包括环境准备、虚拟主机创建、数据库配置及安全注意事项等内容。

lnmp环境下如何配置多个域名解析与虚拟主机?

环境准备与基础检查

在开始配置多域名前,需确保LNMP环境已正确安装,可通过以下命令检查Nginx、MySQL和PHP的运行状态:

  • systemctl status nginx:确认Nginx服务已启动并开机自启。
  • systemctl status mysql:验证MySQL服务运行正常,若未安装可执行apt install mysql-server(Ubuntu/Debian)或yum install mysql-server(CentOS/RHEL)。
  • php -v:检查PHP版本是否与项目需求匹配,建议安装PHP-FPM以提升Nginx与PHP的交互效率。

确保服务器已解析多个域名到同一公网IP,可通过ping 域名验证DNS解析是否生效。

创建网站目录及数据库

为每个域名独立创建网站目录和数据库,是隔离多站点的关键步骤,以域名example.comtest.com为例:

  1. 创建网站根目录
    /var/www/下为每个域名建立专属目录,并设置正确的权限:

    sudo mkdir -p /var/www/example.com /var/www/test.com
    sudo chown -R www-data:www-data /var/www/example.com /var/www/test.com
    sudo chmod -R 755 /var/www/example.com /var/www/test.com

    将网站文件上传至对应目录,或通过wget/curl下载默认测试页面(如index.php)。

  2. 创建MySQL数据库及用户
    登录MySQL控制台(mysql -u root -p),为每个站点创建独立的数据库和用户,并赋予相应权限:

    lnmp环境下如何配置多个域名解析与虚拟主机?

    CREATE DATABASE example_db;
    CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
    FLUSH PRIVILEGES;
    CREATE DATABASE test_db;
    CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'AnotherPassword456!';
    GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost';
    FLUSH PRIVILEGES;

    注意:密码需包含大小写字母、数字及特殊字符,确保安全性。

配置Nginx虚拟主机

Nginx通过虚拟主机(Server Block)实现多域名解析,需为每个域名创建独立的配置文件。

  1. 创建配置文件
    /etc/nginx/sites-available/下创建配置文件,如example.com.conftest.com.conf

    # example.com.conf
    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;
        }
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # 根据实际PHP版本调整
        }
        location ~ /\.ht {
            deny all;
        }
    }

    test.com.conf的配置类似,仅需修改server_nameroot及数据库连接信息。

  2. 启用配置并测试
    创建软链接将配置文件链接到sites-enabled目录,并重启Nginx:

    sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
    sudo nginx -t  # 测试配置语法
    sudo systemctl reload nginx  # 重新加载配置

    访问http://example.comhttp://test.com,若显示对应网站内容,则配置成功。

    lnmp环境下如何配置多个域名解析与虚拟主机?

配置PHP与数据库连接

在网站的PHP文件中,需修改数据库连接信息以匹配对应的数据库和用户,在example.comconfig.php中:

<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'example_user');
define('DB_PASS', 'StrongPassword123!');
define('DB_NAME', 'example_db');
?>

确保PHP代码中无硬编码敏感信息,建议使用环境变量或配置文件管理凭据。

SSL证书配置(可选)

为保障数据传输安全,建议为每个域名申请免费SSL证书(如Let’s Encrypt),通过Certbot工具自动配置:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

执行后,Certbot会自动修改Nginx配置,启用HTTPS(443端口),并设置自动续期。

安全与优化建议

  1. 权限控制:定期检查目录权限,确保/var/www/及其子目录所有者为www-data,避免777权限滥用。
  2. 防火墙配置:使用ufwfirewalld仅开放必要端口(如80、443、22),禁止外部访问MySQL默认端口3306。
  3. 日志监控:通过/var/log/nginx/access.logerror.log分析访问情况,及时发现异常请求。
  4. 定期备份:配置数据库自动备份(如mysqldump)和网站文件增量备份,防止数据丢失。

常见问题排查

  • 404错误:检查root路径是否正确,index文件是否存在。
  • 502错误:确认PHP-FPM服务运行状态(systemctl status php8.1-fpm),检查fastcgi_pass路径是否匹配。
  • 数据库连接失败:验证用户权限、密码及数据库主机是否为localhost

通过以上步骤,即可在LNMP环境下实现多域名的安全、高效配置,合理规划目录结构、数据库隔离及权限管理,不仅能提升服务器资源利用率,还能为后续扩展和维护奠定坚实基础。

赞(0)
未经允许不得转载:好主机测评网 » lnmp环境下如何配置多个域名解析与虚拟主机?