在上一篇文章中,我们展示了如何使用CentOS 7上的Ngx_Pagespeed加快Nginx性能 。 在本教程中,我们将介绍如何在Debian和Ubuntu系统上安装带有ngx_pagespeed的Nginx,以提高Nginx网站的性能。
Nginx [引擎x]是一个免费的开源的,流行的HTTP服务器,为网络上的许多站点提供支持,以其高性能和稳定性着称。 它还可以作为反向代理,通用邮件和TCP / UDP代理服务器,并且还可以部署为负载平衡器。
Ngx_pagespeed是一个免费的开源Nginx模块,旨在提高网站的速度以及减少页面加载时间; 它大大降低了用户查看和与您网站上的内容进行交互的时间。
建议阅读: 安装Mod_Pagespeed以提高Apache服务器性能
Ngx_pagespeed特点:
- HTTPS支持与URL控制。
- 图像优化:剥离元数据,动态调整大小,重新压缩。
- CSS和JavaScript的缩小,连接,内联和大纲。
- 小资源内联。
- 延迟图像和JavaScript加载。
- HTML重写
- 缓存生存期延长。
- 允许配置多个服务器和许多其他服务器。
第1步:从源头安装Nginx
1.从系统上要安装的软件包之后的源中安装带有ngx_pagespeed的 Nginx 。
$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
在Ubuntu上安装Build Essential Tools
2.接下来,使用wget命令下载最新版本的Nginx源文件(在本文撰写的时候为1.13.2 ),并解压缩文件,如下所示。
$ mkdir -p ~/make_nginx $ cd ~/make_nginx $ wget -c https://nginx.org/download/nginx-1.13.2.tar.gz $ tar -xzvf nginx-1.13.2.tar.gz
下载Nginx源码包
接下来,获取ngx_pagespeed源文件并解压缩这样的压缩文件。
$ wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip $ unzip v1.12.34.2-stable.zip
下载Ngx_Pagespeed源文件
4.然后进入解压缩的ngx_pagespeed目录,并下载PageSpeed优化库以编译Nginx,如下所示。
$ cd ngx_pagespeed-1.12.34.2-stable/ $ wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz $ tar -xvzf 1.12.34.2-x64.tar.gz
下载PageSpeed库
第2步:使用Ngx_Pagespeed配置和编译Nginx
5.下一步进入nginx-1.13.2目录,并使用以下命令配置Nginx源。
$ cd ~/make_nginx/nginx-1.13.2 $ ./configure --add-module=$HOME/nginx/ngx_pagespeed-1.12.34.2-stable/ ${PS_NGX_EXTRA_FLAGS}
配置Nginx与Ngx_Pagespeed模块
接下来,编译并安装Nginx如下。
$ make $ sudo make install
安装Nginx与Ngx_Pagespeed
7.安装过程完成后,运行以下命令为Nginx创建必要的符号链接。
$ sudo ln -s /usr/local/nginx/conf/ /etc/nginx $ sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
第3步:为SystemD创建Nginx单元文件
8.在这里,您必须手动创建Nginx单元文件,因为systemd是Debian和Ubuntu系统的较新版本上的init系统
Fisrt,创建文件/lib/systemd/system/nginx.service 。
$ sudo vi /lib/systemd/system/nginx.service </pre Then download the NGINX systemd service file paste the unit file configuration into the file.
[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
保存文件并关闭它。
9.现在,暂时启动nginx服务,并使用下面的命令使其能够在系统启动时启动。
$ sudo systemctl start nginx $ sudo systemctl enable nginx
重要提示 :启动Nginx服务后,您可能会看到如下面的屏幕截图所示的错误。
systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory
Nginx无法启动错误
要解决它,打开Nginx配置/etc/nginx/nginx.conf文件,并附加以下行。
#pid logs/nginx.pid; to pid /run/nginx.pid;
最后重新启动nginx服务。
$ sudo systemctl daemon-reload $ sudo systemctl start nginx $ sudo systemctl status nginx
第4步:使用Pagespeed模块配置Nginx
10.现在Nginx在系统上安装并运行,您需要启用Ngx_pagespeed模块。 首先创建一个目录,模块将缓存您网站的文件,并在此目录中设置适当的权限,如下所示。
$ sudo mkdir -p /var/ngx_pagespeed_cache $ sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache
11.要启用Ngx_pagespeed模块,请打开Nginx配置文件。
$ sudo vi /etc/nginx/nginx.conf
在服务器块中添加以下Ngx_pagespeed配置行。
# Pagespeed main settings pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; # Ensure requests for pagespeed optimized resources go to the pagespeed # handler and no extraneous headers get set. location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/ngx_pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon" { }
注意 :如果您在服务器上部署了任何nginx虚拟主机 ,请将以上pagespeed指令添加到每个服务器块,以便在每个站点上启用Ngx_pagespeed。
以下是在默认虚拟主机中启用了Ngx_pagespeed的Nginx配置文件的工作示例。
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # Pagespeed main settings pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; # Ensure requests for pagespeed optimized resources go to the pagespeed # handler and no extraneous headers get set. location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/ngx_pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon" { } location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
保存并关闭文件。
12.然后通过运行以下命令检查Nginx配置文件的语法是否无错,如果正确,您将看到以下输出:
$ sudo nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
13.然后重新启动Nginx服务器以实现最近的更改。
$ sudo systemctl restart nginx
第5步:用Ngx_pagespeed测试Nginx
14.现在测试Ngx-pagepeed是否正在使用下面的cURL命令与Nginx配合使用。
$ curl -I -p http://localhost
用Ngx_Pagespeed检查Nginx
如果您看不到上述标题,请返回到第10步,并仔细阅读说明,以使连续步骤能够启用Ngx-pagepeed。
Ngx-pagespeed Github仓库 : https : //github.com/pagespeed/ngx_pagespeed
如果您想要保护Nginx Web服务器,那么我们建议您阅读有用的教程: “Nginx安全,加固和改进性能的终极指南” 。
这就对了! 在本教程中,我们解释了如何在Debian和Ubuntu上安装带有ngx_pagespeed的Nginx。 如果您有任何疑问,请使用我们以下的评论表单发送给我们。