如何在Linux上修复“从无cookie的域提供静态内容”错误

我们将向您展示如何解决“从无cookie的域提供静态内容”错误。 当使用诸如PageSpeed Insights,GTMetrix,Pingdom或Uptrends之类的网站分析器工具时,通常会显示警告: “从无cookie的域提供静态内容”这意味着您的Web服务器正在设置cookie-这会强制所有将来的HTTP请求都包括此cookie,从而造成不必要的网络流量。 反过来,这会在用户尝试访问您的网站时降低其速度。 如果您希望您的网站尽快运行,则解决方案是使用无cookie域。 该域不接受来自浏览器的cookie,这会减少总体网络流量。 目标是通过静态域cookie提供所有静态内容,例如图像,javascript,CSS等,这有助于提高这些资源的加载速度。

在本文中,我们将研究如何配置域cookie以允许此警告消息。 有两种方法可以创建无cookie,使用新域提供静态内容或使用子域提供静态内容。 使用子域是最受欢迎的选择,因为它不需要购买新域名-这就是我们今天要介绍的方法。 但是,本文使使用新域而不是子域变得相当容易。 本教程讨论如何在基于Linux的服务器上设置无cookie域。

注意:如果您的主站点使用域根而不是www前缀设置cookie,则您不能使用子域来提供静态内容。 如果您的网站是使用yourdomain.ru而不是www.yourdomain.ru进行安装的,则无法将子域用于静态内容。 这是因为在根域中使用它也适用于所有子域。

步骤1.创建一个子域

可以使用多种方法来完成子域的创建。 如果您拥有cPanel或DirectAdmin之类的控制面板,则可以使用内置实用程序快速轻松地创建子域。 使用内置的子域创建页面来创建一个名为“静态”的子域。 完成后,您的子域应如下所示:

static.yourdomain.ru

之后,尝试通过在Web浏览器中输入完整的URL来访问新的子域。 您应该欢迎进入一个完全白页的页面。

如果您没有控制面板来创建您的子域,那么这不是问题-只需遵循以下两个步骤。 要创建不带控制面板的子域,您将需要编辑网站的配置文件。 您需要编辑或创建的配置文件的位置取决于您所使用的Web服务器软件包。 在本教程中,我们将同时介绍NGINX和Apache。 但是,首先,您需要创建一个新文件夹,其中将包含新子域中的所有站点文件。 / var / www /是创建新文件夹的好地方-将其命名为“ static.yourdomain.ru”。

注意您将需要将站点中的静态文件放置在此文件夹中。 否则,您的静态内容将无法从静态子域加载,

在Apache中创建子域

要使用Apache创建子域,我们需要在现有的网站配置中添加一些额外的代码。 配置文件的位置取决于您所使用的Linux发行版。 这是基于RedHat的系统的文件路径:

/etc/httpd/conf.d/static.yourdomain.conf

对于基于Debian的系统:

/etc/httpd/sites-available/static.yourdomain.conf

使用首选的文本编辑器打开您的网站配置文件,并将以下段落添加到文件末尾:

<VirtualHost *:80>
ServerName static.yourdomain.ru
DocumentRoot /var/www/static.yourdomain.ru
ErrorLog /your/error/log/path
CustomLog /your/requested/log/path combined
</VirtualHost>

用您的域名替换“ yourdomain”,并提供系统上它们各自目录的路径。 完成此操作后,可以使用以下命令重新启动Apache:

service httpd restart

在NGINX中创建一个子域

使用NGINX,我们需要为这个新的子域创建一个完整的配置文件。 因此,在/ etc / nginx / sites中创建并打开一个新文件-可以使用您喜欢的文本编辑器访问并打开static.yourdomain.ru.conf文件。 然后将以下内容添加到新文件中。 (不要忘记将“您的域”更改为您的域名):

server {
        listen 80;
        
        server_name static.yourdomain.ru;

        log_not_found off; 
        error_log off; 
        fastcgi_hide_header Set-Cookie;

        root /var/www/static.yourdomain.ru;
        location / { if ($request_filename ~ ".(css|js|jpg|jpeg|gif|ico|png|bmp|pict|csv|doc|pdf|pls|ppt|tif|tiff|eps|ejs|swf|midi|mid|ttf|eot|woff|otf|svg|svgz|webp|docx|xlsx|xls|pptx|ps|class|jar|woff2|less|scss)$") { 
                add_header Pragma "public"; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; add_header Access-Control-Allow-Origin *; access_log off; expires 1M; break;
                   }
                return 302 http://www.yourdomain.ru$request_uri;
        }
}

保存此文件并退出文本编辑器。 下一步是创建符号链接(符号链接)以在NGINX中启用此配置。 您可以使用以下代码行:

ln -s /etc/sites-available/static.yourdomain.ru.conf /etc/sites-enabled/static.yourdomain.ru.conf

现在重启NGINX,使更改生效:

service nginx restart

步骤2.配置DNS设置。

现在已经成功配置了子域,我们现在需要配置DNS记录以将该子域用作别名。 我们将使用CNAME记录进行此操作。 使用托管服务提供商提供的客户端工具,您可以轻松创建一个CNAME记录,该记录将您的子域指向您的主域。 或者,如果您没有服务器的控制面板,则可以手动更改区域文件。 您需要在区域文件中添加一行,从而为您的主域创建别名。 它应该是这样的:

static.yourdomain.ru. IN CNAME yourdomain.ru.

步骤3.设置.htaccess文件。

现在,您需要在.htaccess文件的无cookie文件的根目录中添加额外的一行。 因此,使用您喜欢的文本编辑器,在当前网站所在的文件夹中打开.htaccess文件,并将此行添加到末尾:

CookieDomain www.yourdomain.ru

前缀“ www”在这里很重要。 没有它,静态子域将无法运行。

注意这仅适用于Apache。 如果您使用的是NGINX,则以前的配置文件仅用于静态内容,这意味着它永远不会接受cookie。

步骤4:自定义您的网站。

现在基本的设置已经完成,您需要更改站点上的链接以指向新的静态子域。 从那一刻起,他将获得他的资源。 例如,您将更改以下内容:

<link rel="stylesheet" type="text/css" href="https://andreyex.ru/css/main.css?x13673">

到以下内容:

<link rel="stylesheet" type="text/css" href="http://static.yourdomain.com/css/main.css">

现在,当您尝试访问站点时,它将从子域而不是主域加载静态内容。 这具有在用户访问您的网站时同时加载网站内容的附加好处。

Sidebar