使用Nginx设置多个网站

我们假定:

  • 您正在使用开发计算机(笔记本电脑、虚拟机或类似设备)。

    在托管环境中部署多个网站可能需要执行其他任务;有关更多信息,请咨询您的托管提供商。

    在云基础架构上设置Adobe Commerce需要执行其他任务。 完成本主题中讨论的任务后,请参阅​ Commerce on Cloud Infrastructure指南 ​中的设置多个网站或商店

  • 在一个虚拟主机文件中接受多个域或为每个网站使用一个虚拟主机;虚拟主机配置文件位于/etc/nginx/sites-available中。

  • 您仅对本教程中讨论的修改使用了Commerce提供的nginx.conf.sample

  • Commerce软件安装在/var/www/html/magento2中。

  • 您拥有默认网站以外的两个网站:

    • 网站代码为french且商店视图代码为frfrench.mysite.mg
    • 网站代码为german且商店视图代码为degerman.mysite.mg
    • mysite.mg是默认网站和默认商店视图
TIP
有关查找这些值的帮助,请参阅创建网站创建商店视图

以下是使用nginx设置多个网站的路线图:

  1. 在管理员中设置网站、商店和商店视图

  2. 创建一个Nginx虚拟主机)以映射多个网站或每个Commerce网站一个Nginx虚拟主机(详细步骤如下)。

  3. 使用Magento提供的nginx.conf.sampleMAGE变量 $MAGE_RUN_TYPE$MAGE_RUN_CODE的值传递给nginx(详细步骤如下)。

    • $MAGE_RUN_TYPE可以是storewebsite

      • 使用website在您的店面中加载您的网站。
      • 使用store加载店面中的任何商店视图。
    • $MAGE_RUN_CODE是与$MAGE_RUN_TYPE对应的唯一网站或商店视图代码。

  4. 在Commerce管理员中更新基本URL配置。

步骤1:在“管理员”中创建网站、商店和存储视图

查看在Admin中设置多个网站、商店和商店视图。

步骤2:创建nginx虚拟主机

此步骤讨论如何在店面中加载网站。 您可以使用网站或商店视图;如果使用商店视图,则必须相应地调整参数值。 您必须以具有sudo权限的用户身份完成此部分中的任务。

只需使用一个nginx虚拟主机文件,就可以使nginx配置简单而干净。 通过使用多个虚拟主机文件,您可以自定义每个存储(以便为french.mysite.mg实例使用自定义位置)。

创建一个虚拟主机(简化):

此配置扩展到nginx配置

  1. 打开文本编辑器,并将以下内容添加到名为/etc/nginx/sites-available/magento的新文件中:

    code language-conf
    map $http_host $MAGE_RUN_CODE {
        default '';
        french.mysite.mg french;
        german.mysite.mg german;
    }
    
    server {
        listen 80;
        server_name mysite.mg french.mysite.mg german.mysite.mg;
        set $MAGE_ROOT /var/www/html/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store;
        include /var/www/html/magento2/nginx.conf;
    }
    
  2. 保存对文件所做的更改并退出文本编辑器。

  3. 验证服务器配置:

    code language-bash
    nginx -t
    
  4. 如果成功,将显示以下消息:

    code language-none
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    如果显示错误,请检查虚拟主机配置文件的语法。

  5. /etc/nginx/sites-enabled目录中创建符号链接:

    code language-bash
    cd /etc/nginx/sites-enabled
    
    code language-bash
    ln -s /etc/nginx/sites-available/magento magento
    

有关map指令的更多详细信息,请参阅有关map指令🔗的nginx文档。

要创建多个虚拟主机

  1. 打开文本编辑器,并将以下内容添加到名为/etc/nginx/sites-available/french.mysite.mg的新文件中:

    code language-conf
    server {
        listen 80;
        server_name french.mysite.mg;
        set $MAGE_ROOT /var/www/html/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store;
        set $MAGE_RUN_CODE french;
        include /var/www/html/magento2/nginx.conf;
    }
    
  2. 在同一目录中创建另一个名为german.mysite.mg的文件,其内容如下:

    code language-conf
    server {
        listen 80;
        server_name german.mysite.mg;
        set $MAGE_ROOT /var/www/html/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store;
        set $MAGE_RUN_CODE german;
        include /var/www/html/magento2/nginx.conf;
    }
    
  3. 保存对文件所做的更改并退出文本编辑器。

  4. 验证服务器配置:

    code language-bash
    nginx -t
    
  5. 如果成功,将显示以下消息:

    code language-none
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    如果显示错误,请检查虚拟主机配置文件的语法。

  6. /etc/nginx/sites-enabled目录中创建符号链接:

    code language-bash
    cd /etc/nginx/sites-enabled
    
    code language-bash
    ln -s /etc/nginx/sites-available/french.mysite.mg french.mysite.mg
    
    code language-bash
    ln -s /etc/nginx/sites-available/german.mysite.mg german.mysite.mg
    

步骤3:修改nginx.conf.sample

TIP
请勿编辑nginx.conf.sample文件;该文件是一个核心Commerce文件,可能会随每个新版本进行更新。 请改为复制nginx.conf.sample文件,重命名该文件,然后编辑复制的文件。

编辑主应用程序的PHP入口点

要修改nginx.conf.sample文件**:

  1. 打开文本编辑器并查看nginx.conf.sample文件,<magento2_installation_directory>/nginx.conf.sample。 查找以下部分:

    code language-conf
    # PHP entry point for main application
    location ~ (index|get|static|report|404|503|health_check)\.php$ {
        try_files $uri =404;
        fastcgi_pass   fastcgi_backend;
        fastcgi_buffers 1024 4k;
    
        fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
        fastcgi_param  PHP_VALUE "memory_limit=1G \n max_execution_time=18000";
        fastcgi_read_timeout 600s;
        fastcgi_connect_timeout 600s;
    
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
  2. 在include语句前使用以下两行更新nginx.conf.sample文件:

    code language-conf
    fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
    fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
    

更新了主应用程序的PHP入口点的示例如下所示:

# PHP entry point for main application

location ~ (index|get|static|report|404|503|health_check)\.php$ {
    try_files $uri =404;
    fastcgi_pass   fastcgi_backend;
    fastcgi_buffers 1024 4k;

    fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
    fastcgi_param  PHP_VALUE "memory_limit=1G \n max_execution_time=18000";
    fastcgi_read_timeout 600s;
    fastcgi_connect_timeout 600s;

    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    # START - Multisite customization
    fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
    fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
    # END - Multisite customization
    include        fastcgi_params;
}

步骤4:更新基本URL配置

您必须在Commerce管理员中更新frenchgerman网站的基本URL。

更新法语网站基本URL

  1. 登录到Commerce管理员并导航到​ 商店 > 设置 > 配置 > 常规 > Web
  2. 将​ 配置作用域 ​更改为french网站。
  3. 展开​ 基本URL ​部分并将​ 基本URL ​和​ 基本链接URL ​值更新为http://french.magento24.com/
  4. 展开​ 基本URL (安全) ​部分并将​ 安全基本URL ​和​ 安全基本链接URL ​值更新为https://french.magento24.com/
  5. 单击​ 保存配置 ​并保存配置更改。

更新德语网站基本URL

  1. 登录到Commerce管理员并导航到​ 商店 > 设置 > 配置 > 常规 > Web
  2. 将​ 配置作用域 ​更改为german网站。
  3. 展开​ 基本URL ​部分并将​ 基本URL ​和​ 基本链接URL ​值更新为http://german.magento24.com/
  4. 展开​ 基本URL (安全) ​部分并将​ 安全基本URL ​和​ 安全基本链接URL ​值更新为https://german.magento24.com/
  5. 单击​ 保存配置 ​并保存配置更改。

清理缓存

运行以下命令以清理configfull_page缓存。

bin/magento cache:clean config full_page

验证您的站点

除非您为商店的URL设置了DNS,否则必须在hosts文件中添加指向主机的静态路由:

  1. 找到操作系统hosts文件。

  2. 采用以下格式添加静态路由:

    code language-conf
    <ip-address> french.mysite.mg
    <ip-address> german.mysite.mg
    
  3. 在浏览器中转到以下URL之一:

    code language-http
    http://mysite.mg/admin
    http://french.mysite.mg/frenchstoreview
    http://german.mysite.mg/germanstoreview
    
INFO
  • 在托管环境中部署多个网站可能需要执行其他任务;有关更多信息,请咨询您的托管提供商。
  • 在云基础架构上设置Adobe Commerce需要执行其他任务;请参阅​_云基础架构上的Commerce指南_​中的设置多个云网站或商店

故障排除

  • 如果您的法语和德语网站返回404但您的管理员加载了,请确保您已完成步骤6:将商店代码添加到基本URL
  • 如果所有URL都返回404,请确保已重新启动Web服务器。
  • 如果管理员无法正常运行,请确保正确设置虚拟主机。
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c