├── .gitignore
├── README.md
├── rebuild.sh
└── tpl
├── default.stpl
└── default.tpl
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Description
2 | Rebuild Nginx with Google PageSpeed and http/2 for VestaCP.
3 | Overwrite templates default.stpl and default.tpl.
4 | Rebuild config Nginx for all sites.
5 | # Install
6 | cd /usr/local/src/
7 | git clone https://github.com/Prihod/vestacp_nginx_pagespeed_http2.git
8 | cd vestacp_nginx_pagespeed_http2/
9 | chmod +x rebuild.sh
10 | sudo ./rebuild.sh
11 | Links
12 | -----------
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | [Check if mod_pagespeed is enabled](https://ismodpagespeedworking.com/)
22 |
23 | [Vesta upgrade PHP](https://www.mysterydata.com/how-to-upgrade-php-7-0-to-php-7-1-or-php-7-2-on-ubuntu-vestacp/)
24 |
25 | [Vesta dkim public key located](https://github.com/serghey-rodin/vesta/issues/320)
26 |
27 | [Vesta FIX phpmyadmin](https://forum.vestacp.com/viewtopic.php?t=10307)
28 |
29 |
30 | Useful console commands Vesta
31 | -----------
32 | v-rebuild-web-domains USER [RESTART] - rebuild web domains
33 |
--------------------------------------------------------------------------------
/rebuild.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Detect OS
4 | case $(head -n1 /etc/issue | cut -f 1 -d ' ') in
5 | Debian) OS_NAME="debian" ;;
6 | Ubuntu) OS_NAME="ubuntu" ;;
7 | Amazon) OS_NAME="amazon" ;;
8 | CentOS) OS_NAME="centos" ;;
9 | *) OS_NAME="rhel" ;;
10 | esac
11 |
12 | OS_GROUP=1
13 | DEF_OPENSSL_VER=1.1.1a
14 | DEF_NPS_VERSION=1.13.35.2-stable
15 | DEF_NGNX_VER=$(nginx -v 2>&1 | grep "/" | awk -F '/' '{print $2}')
16 | DIR_VESTA_NGNX_TPL="/usr/local/vesta/data/templates/web/nginx/"
17 |
18 | if [[ $OS_NAME == "debian" || $OS_NAME == "ubuntu" ]]
19 | then
20 | OS_GROUP=2
21 | fi
22 |
23 | echo -n "Enter version Nginx [$DEF_NGNX_VER]: "
24 | read NGNX_VER
25 | if [ -z $NGNX_VER ]
26 | then
27 | NGNX_VER=$DEF_NGNX_VER
28 | fi
29 |
30 | echo -n "Enter version OpenSSL [$DEF_OPENSSL_VER]: "
31 | read OPENSSL_VER
32 | if [ -z $OPENSSL_VER ]
33 | then
34 | OPENSSL_VER=$DEF_OPENSSL_VER
35 | fi
36 |
37 | echo -n "Enter version PageSpeed [$DEF_NPS_VERSION]: "
38 | read NPS_VERSION
39 | if [ -z $NPS_VERSION ]
40 | then
41 | NPS_VERSION=$DEF_NPS_VERSION
42 | fi
43 |
44 | echo "Start install dependecies"
45 | #install dependecies
46 | if [[ $OS_GROUP == 1 ]]
47 | then
48 | sudo yum check-update || sudo yum update -y
49 | sudo yum install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel gcc
50 | else
51 | sudo apt-get update
52 | sudo apt-get upgrade
53 | sudo apt-get install libpcre3 libpcre3-dev checkinstall zlib1g-dev uuid-dev build-essential unzip libssl-dev -y
54 | sudo apt-get build-dep nginx -y
55 | fi
56 |
57 | if [[ $OS_NAME == "centos" ]]
58 | then
59 | PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc"
60 | sudo rpm --import http://linuxsoft.cern.ch/cern/slc6X/i386/RPM-GPG-KEY-cern
61 | sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
62 | sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils
63 | fi
64 |
65 |
66 | echo "Start download Nginx"
67 | #download nginx
68 | wget http://nginx.org/download/nginx-${NGNX_VER}.tar.gz
69 | if [[ $? -ne 0 ]]; then
70 | echo "Error download Nginx"
71 | exit 1;
72 | fi
73 | tar -xvzf nginx-${NGNX_VER}.tar.gz
74 | cd nginx-${NGNX_VER}/
75 |
76 |
77 | echo "Start download PageSpeed"
78 | #pagespeed module
79 | wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}.zip
80 | if [[ $? -ne 0 ]]; then
81 | echo "Error download PageSpeed"
82 | exit 1;
83 | fi
84 | unzip v${NPS_VERSION}.zip
85 |
86 | nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d)
87 | cd "$nps_dir"
88 | NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
89 | NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
90 | psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz
91 | [ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
92 |
93 | echo "Start download PSOL"
94 | wget ${psol_url}
95 | if [[ $? -ne 0 ]]; then
96 | echo "Error download PSOL $psol_url"
97 | exit 1;
98 | fi
99 |
100 | tar -xzvf $(basename ${psol_url})
101 | cd ..
102 |
103 |
104 | echo "Start download OpenSSL"
105 | #download openssl
106 | wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz
107 | if [[ $? -ne 0 ]]; then
108 | echo "Error download OpenSSL"
109 | exit 1;
110 | fi
111 | tar -xzvf openssl-${OPENSSL_VER}.tar.gz
112 |
113 | echo "Start configure Nginx"
114 | #configure
115 | make clean
116 |
117 | configure="./configure "
118 | configure+=$(nginx -V 2>&1 | grep "configure arguments:" | awk -F'configure arguments: ' '{print $2}')
119 | configure+=" --with-openssl=openssl-${OPENSSL_VER}"
120 | configure+=" --add-module=$nps_dir ${PS_NGX_EXTRA_FLAGS}"
121 | echo $configure;
122 | eval $configure
123 |
124 | if [[ $? -ne 0 ]]; then
125 | echo "Error configure Nginx"
126 | exit 1;
127 | fi
128 |
129 | echo "Start make Nginx"
130 | #compile
131 | make
132 |
133 | if [[ $? -ne 0 ]]; then
134 | echo "Error make Nginx"
135 | exit 1;
136 | fi
137 |
138 |
139 | if [[ $OS_GROUP == 1 ]]
140 | then
141 | sudo make install
142 | else
143 | sudo checkinstall -y
144 | fi
145 |
146 |
147 | if [[ $? -ne 0 ]]; then
148 | echo "Error build package Nginx"
149 | exit 1;
150 | fi
151 | nginx -V
152 |
153 |
154 | echo -n "Overwrite web templates Nginx? [yes] (Y/n) "
155 | read overwrite
156 | if [[ $overwrite = y || $overwrite = Y || -z $overwrite ]]
157 | then
158 | cd ../tpl
159 | for file in *; do
160 | oldFile="$DIR_VESTA_NGNX_TPL$file"
161 | if [ -f $oldFile ]; then
162 | mv $oldFile "${oldFile}.old"
163 | fi
164 | cp $file "$DIR_VESTA_NGNX_TPL$file"
165 | done
166 | fi
167 |
168 |
169 | echo -n "Rebuild config Nginx for all sites? [yes] (Y/n) "
170 | read rebuild
171 | if [[ $rebuild = y || $rebuild = Y || -z $rebuild ]]
172 | then
173 | for user in $(v-list-sys-users plain); do v-rebuild-web-domains $user; done
174 | nginx -t
175 | fi
176 |
177 | echo -n "Restart Nginx? [yes] (Y/n) "
178 | read restart
179 | if [[ $restart = n || $restart = N ]]
180 | then
181 | exit 1
182 | fi
183 |
184 | if [[ $OS_GROUP == 2 ]]
185 | then
186 | systemctl daemon-reload
187 | fi
188 |
189 | service nginx restart
--------------------------------------------------------------------------------
/tpl/default.stpl:
--------------------------------------------------------------------------------
1 | server {
2 | listen %ip%:%proxy_ssl_port% ssl http2;
3 | server_name %domain_idn% %alias_idn%;
4 | ssl on;
5 | ssl_certificate %ssl_pem%;
6 | ssl_certificate_key %ssl_key%;
7 | error_log /var/log/%web_system%/domains/%domain%.error.log error;
8 |
9 | location / {
10 | proxy_pass https://%ip%:%web_ssl_port%;
11 | location ~* ^.+\.(%proxy_extentions%)$ {
12 | root %sdocroot%;
13 | access_log /var/log/%web_system%/domains/%domain%.log combined;
14 | access_log /var/log/%web_system%/domains/%domain%.bytes bytes;
15 | expires max;
16 | try_files $uri @fallback;
17 | }
18 | }
19 |
20 | location /error/ {
21 | alias %home%/%user%/web/%domain%/document_errors/;
22 | }
23 |
24 | location @fallback {
25 | proxy_pass https://%ip%:%web_ssl_port%;
26 | }
27 |
28 | location ~ /\.ht {return 404;}
29 | location ~ /\.svn/ {return 404;}
30 | location ~ /\.git/ {return 404;}
31 | location ~ /\.hg/ {return 404;}
32 | location ~ /\.bzr/ {return 404;}
33 |
34 | pagespeed On;
35 | #pagespeed Off;
36 | pagespeed RewriteLevel PassThrough;
37 | pagespeed FileCachePath /var/cache/pagespeed;
38 |
39 | ## Text / HTML
40 | #Удаляет излишки пробелы в HTML - файлах
41 | #pagespeed EnableFilters collapse_whitespace;
42 | #pagespeed EnableFilters convert_meta_tags;
43 | #pagespeed EnableFilters elide_attributes;
44 | #pagespeed EnableFilters remove_comments;
45 | #pagespeed EnableFilters remove_quotes;
46 |
47 | ## JavaScript
48 | pagespeed EnableFilters combine_javascript;
49 | pagespeed EnableFilters inline_javascript;
50 |
51 | ## CSS
52 | pagespeed EnableFilters outline_css;
53 | pagespeed EnableFilters combine_css;
54 | pagespeed EnableFilters inline_import_to_link;
55 | pagespeed EnableFilters inline_css;
56 | pagespeed EnableFilters inline_google_font_css;
57 | pagespeed EnableFilters move_css_above_scripts;
58 | #pagespeed EnableFilters move_css_to_head;
59 | #pagespeed EnableFilters prioritize_critical_css;
60 | pagespeed EnableFilters rewrite_css;
61 | pagespeed EnableFilters fallback_rewrite_css_urls;
62 | #pagespeed EnableFilters rewrite_style_attributes_with_url;
63 |
64 | ## Images
65 | pagespeed EnableFilters resize_mobile_images;
66 | pagespeed EnableFilters lazyload_images;
67 | #pagespeed EnableFilters convert_gif_to_png;
68 | pagespeed EnableFilters convert_jpeg_to_progressive;
69 | pagespeed EnableFilters recompress_jpeg;
70 | pagespeed EnableFilters recompress_png;
71 | pagespeed EnableFilters recompress_webp;
72 | #pagespeed EnableFilters strip_image_color_profile;
73 | #pagespeed EnableFilters strip_image_meta_data;
74 | #pagespeed EnableFilters convert_png_to_jpeg;
75 | #pagespeed EnableFilters resize_images;
76 | #pagespeed EnableFilters resize_rendered_image_dimensions;
77 | pagespeed EnableFilters convert_jpeg_to_webp;
78 | #pagespeed EnableFilters convert_to_webp_lossless;
79 | #pagespeed EnableFilters insert_image_dimensions;
80 | #pagespeed EnableFilters make_google_analytics_async;
81 |
82 | ## Miscellaneous
83 | pagespeed EnableFilters add_instrumentation;
84 | pagespeed EnableFilters insert_dns_prefetch;
85 |
86 | ## Cache
87 | pagespeed EnableFilters extend_cache;
88 | pagespeed EnableFilters extend_cache_pdfs;
89 | pagespeed EnableFilters local_storage_cache;
90 |
91 | pagespeed JpegRecompressionQuality 85;
92 | pagespeed ImageRecompressionQuality 85;
93 |
94 |
95 | # Максимальный размер кэша
96 | pagespeed FileCacheSizeKb 102400;
97 | # Интервал для очистки кэша
98 | pagespeed FileCacheCleanIntervalMs 360000;
99 | # Максимальное количество дескрипторов
100 | pagespeed FileCacheInodeLimit 500000;
101 |
102 | #SSL
103 | pagespeed FetchHttps enable;
104 | pagespeed SslCertDirectory %home%/%user%/conf/web/;
105 | pagespeed SslCertFile %home%/%user%/conf/web/%domain%.crt;
106 | pagespeed MapOriginDomain "localhost" "https://%domain%";
107 | pagespeed LoadFromFile "https://%domain%" "%home%/%user%/web/%domain%/public_html/";
108 |
109 |
110 | pagespeed Statistics on;
111 | pagespeed StatisticsLogging on;
112 | pagespeed StatisticsLoggingIntervalMs 60000;
113 | pagespeed StatisticsLoggingMaxFileSizeKb 1024;
114 | pagespeed LogDir /var/log/pagespeed;
115 | pagespeed AdminPath /pagespeed_admin;
116 |
117 | location ~ ^/pagespeed_admin {
118 | allow 127.0.0.1;
119 | deny all;
120 | }
121 |
122 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
123 | location ~ "^/pagespeed_static/" { }
124 | location ~ "^/ngx_pagespeed_beacon$" { }
125 |
126 | include %home%/%user%/conf/web/snginx.%domain%.conf*;
127 | }
128 |
129 |
--------------------------------------------------------------------------------
/tpl/default.tpl:
--------------------------------------------------------------------------------
1 | server {
2 | listen %ip%:%proxy_port%;
3 | server_name %domain_idn% %alias_idn%;
4 | error_log /var/log/%web_system%/domains/%domain%.error.log error;
5 |
6 | location / {
7 | proxy_pass http://%ip%:%web_port%;
8 | location ~* ^.+\.(%proxy_extentions%)$ {
9 | root %docroot%;
10 | access_log /var/log/%web_system%/domains/%domain%.log combined;
11 | access_log /var/log/%web_system%/domains/%domain%.bytes bytes;
12 | expires max;
13 | try_files $uri @fallback;
14 | }
15 | }
16 |
17 | location /error/ {
18 | alias %home%/%user%/web/%domain%/document_errors/;
19 | }
20 |
21 | location @fallback {
22 | proxy_pass http://%ip%:%web_port%;
23 | }
24 |
25 | location ~ /\.ht {return 404;}
26 | location ~ /\.svn/ {return 404;}
27 | location ~ /\.git/ {return 404;}
28 | location ~ /\.hg/ {return 404;}
29 | location ~ /\.bzr/ {return 404;}
30 |
31 | pagespeed On;
32 | #pagespeed Off;
33 | pagespeed RewriteLevel PassThrough;
34 | pagespeed FileCachePath /var/cache/pagespeed;
35 |
36 | ## Text / HTML
37 | #Удаляет излишки пробелы в HTML - файлах
38 | #pagespeed EnableFilters collapse_whitespace;
39 | #pagespeed EnableFilters convert_meta_tags;
40 | #pagespeed EnableFilters elide_attributes;
41 | #pagespeed EnableFilters remove_comments;
42 | #pagespeed EnableFilters remove_quotes;
43 |
44 | ## JavaScript
45 | pagespeed EnableFilters combine_javascript;
46 | pagespeed EnableFilters inline_javascript;
47 |
48 | ## CSS
49 | pagespeed EnableFilters outline_css;
50 | pagespeed EnableFilters combine_css;
51 | pagespeed EnableFilters inline_import_to_link;
52 | pagespeed EnableFilters inline_css;
53 | pagespeed EnableFilters inline_google_font_css;
54 | pagespeed EnableFilters move_css_above_scripts;
55 | #pagespeed EnableFilters move_css_to_head;
56 | #pagespeed EnableFilters prioritize_critical_css;
57 | pagespeed EnableFilters rewrite_css;
58 | pagespeed EnableFilters fallback_rewrite_css_urls;
59 | #pagespeed EnableFilters rewrite_style_attributes_with_url;
60 |
61 | ## Images
62 | pagespeed EnableFilters resize_mobile_images;
63 | pagespeed EnableFilters lazyload_images;
64 | #pagespeed EnableFilters convert_gif_to_png;
65 | pagespeed EnableFilters convert_jpeg_to_progressive;
66 | pagespeed EnableFilters recompress_jpeg;
67 | pagespeed EnableFilters recompress_png;
68 | pagespeed EnableFilters recompress_webp;
69 | #pagespeed EnableFilters strip_image_color_profile;
70 | #pagespeed EnableFilters strip_image_meta_data;
71 | #pagespeed EnableFilters convert_png_to_jpeg;
72 | #pagespeed EnableFilters resize_images;
73 | #pagespeed EnableFilters resize_rendered_image_dimensions;
74 | pagespeed EnableFilters convert_jpeg_to_webp;
75 | #pagespeed EnableFilters convert_to_webp_lossless;
76 | #pagespeed EnableFilters insert_image_dimensions;
77 | #pagespeed EnableFilters make_google_analytics_async;
78 |
79 | ## Miscellaneous
80 | pagespeed EnableFilters add_instrumentation;
81 | pagespeed EnableFilters insert_dns_prefetch;
82 |
83 | ## Cache
84 | pagespeed EnableFilters extend_cache;
85 | pagespeed EnableFilters extend_cache_pdfs;
86 | pagespeed EnableFilters local_storage_cache;
87 |
88 | pagespeed JpegRecompressionQuality 85;
89 | pagespeed ImageRecompressionQuality 85;
90 |
91 |
92 | # Максимальный размер кэша
93 | pagespeed FileCacheSizeKb 102400;
94 | # Интервал для очистки кэша
95 | pagespeed FileCacheCleanIntervalMs 360000;
96 | # Максимальное количество дескрипторов
97 | pagespeed FileCacheInodeLimit 500000;
98 |
99 |
100 | pagespeed Statistics on;
101 | pagespeed StatisticsLogging on;
102 | pagespeed StatisticsLoggingIntervalMs 60000;
103 | pagespeed StatisticsLoggingMaxFileSizeKb 1024;
104 |
105 | location ~ ^/pagespeed_admin {
106 | allow 127.0.0.1;
107 | deny all;
108 | }
109 |
110 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
111 | location ~ "^/pagespeed_static/" { }
112 | location ~ "^/ngx_pagespeed_beacon$" { }
113 |
114 | include %home%/%user%/conf/web/nginx.%domain%.conf*;
115 | }
116 |
117 |
--------------------------------------------------------------------------------