├── README.md ├── conf.d ├── blacklist.conf ├── microcache.conf └── pagespeed │ ├── pagespeed.conf │ └── pagespeed_libraries.conf ├── fastcgi_params ├── h5bp ├── README.md ├── basic.conf ├── directive-only │ ├── cache-file-descriptors.conf │ ├── cross-domain-insecure.conf │ ├── extra-security.conf │ ├── no-transform.conf │ ├── spdy.conf │ ├── ssl-stapling.conf │ ├── ssl.conf │ └── x-ua-compatible.conf └── location │ ├── cache-busting.conf │ ├── cross-domain-fonts.conf │ ├── expires.conf │ └── protect-system-files.conf ├── mime.types ├── naxsi.rules ├── naxsi_core.rules ├── nginx.conf ├── nomad-conf ├── cachestatic.add ├── deny-htaccess.add ├── donotlog.add ├── fastcgi.add ├── pagespeed-all-settings.add ├── pagespeed.add ├── probe.add ├── proxy-pass.add ├── realip.add ├── serverror.add ├── status-stub.add └── wordpress.add ├── proxy_params ├── scripts └── update-pagespeed-libraries.sh ├── sites-enabled ├── example-ssl.com ├── example.com └── undefined-sites.conf └── uwsgi_params /README.md: -------------------------------------------------------------------------------- 1 | nginx-conf 2 | ========== 3 | # General purpose Nginx Configuration Template 4 | 5 | ## Nginx Template 6 | Here lies my personal Nginx template for a mixed setup. 7 | I'm trying to make this nginx configured for general use; whether it's wordpress or static html or whatever. 8 | My aim is to enable caching, SEO friendly URL's, Cloudflare support, adding h5bp, ngx_pagespeed optimizations etc. Thus trying to create a copy/paste style nginx template. 9 | 10 | 11 | It also uses https://github.com/h5bp/server-configs-nginx and a compilation of many tweaks. 12 | 13 | ### Requirements 14 | 15 | Nginx 1.6 and above. 16 | nginx-extras or your own compilation with the following: 17 | * ngx_pagespeed (comes with nginx extras) 18 | * ngx_http_gunzip 19 | 20 | 21 | ### What to do? 22 | * Edit pagespeed settings: Edit pagespeed to add/remove filters. 23 | * Add your domains to pagespeed.conf 24 | 25 | * Create cache and log folders 26 | * Change ownership of the folders. 27 | You can run the below bash script to create and chmod all these folders. 28 | ``` 29 | for dir in /var/cache/nginx/ /var/cache/nginx/client /var/cache/nginx/scgi /var/cache/nginx/uwsgi /var/cache/nginx/fastcgi /var/cache/nginx/proxy /var/ngx_pagespeed_cache /var/log/nginx /var/log/pagespeed /var/ngx_pagespeed_cache /var/log/pagespeed 30 | do 31 | if [ ! -d $dir ]; then 32 | mkdir -p $dir 33 | chown -R www-data:www-data $dir 34 | else 35 | chown -R www-data:www-data $dir 36 | fi 37 | done 38 | ``` 39 | 40 | 41 | ### Known Issues 42 | -------------------------------------------------------------------------------- /conf.d/blacklist.conf: -------------------------------------------------------------------------------- 1 | # https://github.com/perusio/drupal-with-nginx/blob/D7/blacklist.conf 2 | #-*- mode: nginx; mode: flyspell-prog; ispell-local-dictionary: "american" -*- 3 | ### This file implements a blacklist for certain user agents and 4 | ### referrers. It's a first line of defense. It must be included 5 | ### inside a http block. 6 | 7 | 8 | ## Add here all user agents that are to be blocked. 9 | map $http_user_agent $bad_bot { 10 | default 0; 11 | ~*^Lynx 0; # Let Lynx go through 12 | libwww-perl 1; 13 | ~(?i)(httrack|htmlparser|libwww) 1; 14 | } 15 | 16 | ## Add here all referrers that are to blocked. 17 | map $http_referer $bad_referer { 18 | default 0; 19 | ~(?i)(adult|babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|webcam|zippo|casino|replica) 1; 20 | } 21 | 22 | ## Add here all hosts that should be spared any referrer checking. 23 | geo $bad_referer { 24 | 127.0.0.1 0; 25 | 192.168.1.0/24 0; 26 | } 27 | -------------------------------------------------------------------------------- /conf.d/microcache.conf: -------------------------------------------------------------------------------- 1 | #http://eureka.ykyuen.info/2013/01/24/nginx-enable-microcaching/ 2 | 3 | map $http_cookie $cache_uid { 4 | default nil; 5 | ~SESS[[:alnum:]]+=(?[[:alnum:]]+) $session_id; 6 | } 7 | map $request_method $no_cache { 8 | default 1; 9 | HEAD 0; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /conf.d/pagespeed/pagespeed.conf: -------------------------------------------------------------------------------- 1 | # pagespeed FetchWithGzip on; 2 | pagespeed UseNativeFetcher on; 3 | resolver 8.8.8.8; 4 | pagespeed FetcherTimeoutMs 100000; 5 | 6 | pagespeed Domain localhost; # Add your other domains here, one per line for either domain OR location 7 | # pagespeed Domain http://example.com/javascript 8 | # pagespeed Domain https://example.com/shop 9 | 10 | # Define the cache path we have created with the right permissions 11 | # sudo mkdir -p /var/ngx_pagespeed_cache 12 | # sudo chown -R www-data:www-data /var/ngx_pagespeed_cache 13 | pagespeed FileCachePath "/var/ngx_pagespeed_cache"; 14 | 15 | include /etc/nginx/conf.d/pagespeed/pagespeed_libraries.conf; 16 | -------------------------------------------------------------------------------- /conf.d/pagespeed/pagespeed_libraries.conf: -------------------------------------------------------------------------------- 1 | pagespeed Library 77552 PepVn-P_k9Tu0kcTyJ-b5 //ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js; 2 | pagespeed Library 142117 OoCvQbU_aWFVnnfhmTema //ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js; 3 | pagespeed Library 78025 UumH-TS6iru5zHOXUioza //ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js; 4 | pagespeed Library 143159 m5owwhhKGUC4yZ4lPp1OU //ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js; 5 | pagespeed Library 78692 kzti2pDuaVkTYa4g4da_x //ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js; 6 | pagespeed Library 145021 tPJcfRKvfKORp4d_mgYiC //ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js; 7 | pagespeed Library 78756 Oi13hXvUtUha1N1_Sk7eS //ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js; 8 | pagespeed Library 145321 YDHfY1VT6nWAIyawH8iGF //ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js; 9 | pagespeed Library 79750 8Z6CaSdjbKIx8jaEfu7WY //ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js; 10 | pagespeed Library 146939 gWyRKAxbhpf7AJkxNfHcX //ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js; 11 | pagespeed Library 80020 rQF8VFuTYXu4opMUpOm-h //ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js; 12 | pagespeed Library 147388 ho3DuVfV73GMQEJQSvTcf //ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js; 13 | pagespeed Library 80576 MjoHFJRIi0Rvh3wRU231f //ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js; 14 | pagespeed Library 148256 BAN-z1Ouh3rhuMmA0qPhY //ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js; 15 | pagespeed Library 81186 F3HvDJ8hzTxpVEm8C5ngm //ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js; 16 | pagespeed Library 149509 kK_BA6wYkEPLZ4c8o11Cz //ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js; 17 | pagespeed Library 79684 3Rig_3uZcraD1uKMQcAuh //ajax.googleapis.com/ajax/libs/angularjs/1.1.1/angular.min.js; 18 | pagespeed Library 146698 5xJpbbfKT3Svo29lf9QXq //ajax.googleapis.com/ajax/libs/angularjs/1.1.1/angular.min.js; 19 | pagespeed Library 82228 fwWKhQHUDi7zmzbUJxOtj //ajax.googleapis.com/ajax/libs/angularjs/1.1.3/angular.min.js; 20 | pagespeed Library 151270 ZvD4k1guq1rRPEIfainfD //ajax.googleapis.com/ajax/libs/angularjs/1.1.3/angular.min.js; 21 | pagespeed Library 86026 ooLItl07JytdV0FRnvzZC //ajax.googleapis.com/ajax/libs/angularjs/1.1.4/angular.min.js; 22 | pagespeed Library 159547 _oKoCS3ltDaVfmwAtm_f5 //ajax.googleapis.com/ajax/libs/angularjs/1.1.4/angular.min.js; 23 | pagespeed Library 88522 2JUI9Q7D5_J6xOq20MRa4 //ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js; 24 | pagespeed Library 165278 4Mho01GdatLEACqlLgzca //ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js; 25 | pagespeed Library 98645 Gr4dBeB56JXZsUdeEbIqw //ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js; 26 | pagespeed Library 187517 k788-J-FZEYdh5VW8o2L_ //ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js; 27 | pagespeed Library 90040 0DzYE53DkLYtMU4NqHvfF //ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js; 28 | pagespeed Library 174750 CgCTRwt4jXBJOXvXCuE-T //ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js; 29 | pagespeed Library 90693 dryKkSt1DZ_Djx-EcaLVh //ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js; 30 | pagespeed Library 176172 pECEq1r5OgxtRdx1S33F8 //ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js; 31 | pagespeed Library 97370 llRdGs0GNTDa9kQXgeo_7 //ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.min.js; 32 | pagespeed Library 184880 lQv4OYK6PmQRDyBDA9QYB //ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.min.js; 33 | pagespeed Library 98793 v2fBBPtrR0FnY2gAIrphd //ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js; 34 | pagespeed Library 189019 jbMiuHJ4rKNpqs4_kZ6zG //ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js; 35 | pagespeed Library 99745 vJIK0vEcrpgcwLDWNx9Rx //ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js; 36 | pagespeed Library 191508 ye3dgqZ7ndZWLDoBb6Oo8 //ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js; 37 | pagespeed Library 99945 -De0M_w9l0O37awHCbElq //ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.min.js; 38 | pagespeed Library 191936 C1KWgkqyoP62bTWDC6a8M //ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.min.js; 39 | pagespeed Library 99988 mEgfaOYIxmAlgFK6pkNkG //ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js; 40 | pagespeed Library 192028 1CZiRTrxMxUoHdbIHgsY5 //ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js; 41 | pagespeed Library 100773 VUlUxlm09j72WTzsXP4_p //ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js; 42 | pagespeed Library 193422 CBSWWxwSn_P8OGA79zSFZ //ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js; 43 | pagespeed Library 102102 pqS1YE1D5LU6RFI3I0ni6 //ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js; 44 | pagespeed Library 195951 gItOuHee4yo5Jdzm2iAJi //ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js; 45 | pagespeed Library 102809 MP3WU9ouTM9sRVc7-9M5c //ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js; 46 | pagespeed Library 197278 CgP-agYThp3bPG4tOWnXe //ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js; 47 | pagespeed Library 104105 3ZY7OFbJ0-oIMSouwPAtM //ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js; 48 | pagespeed Library 199905 JA-J1-A0W3yu5Dh60DPfn //ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js; 49 | pagespeed Library 105025 gWazTpqbLxoiK-IpxrFS- //ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js; 50 | pagespeed Library 201740 8q6imUlDBg7g0HAq9Ai3k //ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js; 51 | pagespeed Library 105424 a_fDVwfpmc-jDYID2sDKY //ajax.googleapis.com/ajax/libs/angularjs/1.2.18/angular.min.js; 52 | pagespeed Library 202933 xcIM6aBLEmFOSnxn4IZ8J //ajax.googleapis.com/ajax/libs/angularjs/1.2.18/angular.min.js; 53 | pagespeed Library 106086 -PxQafd2FgLUFVHXpjS09 //ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js; 54 | pagespeed Library 204405 ---0ST7oAfGbKJbAqD6BV //ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js; 55 | pagespeed Library 98994 nY8TvY9PteK-RYivQCG_N //ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.min.js; 56 | pagespeed Library 189401 59tl_plNq-0HD6RkqvZTf //ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.min.js; 57 | pagespeed Library 105842 z_E3P8OExK3RCIFb5bVVZ //ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js; 58 | pagespeed Library 203788 ID-DP-TU0qw5SjsdmVDkX //ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js; 59 | pagespeed Library 106153 YhyoOkFMP_ArF5Lu_gceo //ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js; 60 | pagespeed Library 204244 DtdPF-lJA6GwWU1GP4oM8 //ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js; 61 | pagespeed Library 106543 eXHxn1UijewzqjzQt4mUF //ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js; 62 | pagespeed Library 204952 dhJTL3846-OQ4EizKJY-G //ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js; 63 | pagespeed Library 106743 _AiEaqUqlV0JcIR7lBAMr //ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js; 64 | pagespeed Library 205266 1RGGnJbYnQwrXprtmC4__ //ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js; 65 | pagespeed Library 106962 w5_HiDZcrJx2SryBRiKoV //ajax.googleapis.com/ajax/libs/angularjs/1.2.24/angular.min.js; 66 | pagespeed Library 205719 OjRKaBjJQq27pmSWvwW3k //ajax.googleapis.com/ajax/libs/angularjs/1.2.24/angular.min.js; 67 | pagespeed Library 107093 U3CRVRjZZM-TMDENZcuFR //ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js; 68 | pagespeed Library 205958 IOaHVEktlscbmhgOsU4Mf //ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js; 69 | pagespeed Library 107145 Cxt7RFo2-eR8TnUzTTSyi //ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js; 70 | pagespeed Library 206054 BgW-JnrYB4ff8xz_iB4bh //ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js; 71 | pagespeed Library 107668 HfUEWuegWO7luYvQ2dFSW //ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js; 72 | pagespeed Library 207772 HHFhuFoUW4NIj56pavesK //ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js; 73 | pagespeed Library 107671 FWBzP-6IaCk5cJFjUowkx //ajax.googleapis.com/ajax/libs/angularjs/1.2.28/angular.min.js; 74 | pagespeed Library 207775 o2Oy19QQSN1mXkIPbbPJt //ajax.googleapis.com/ajax/libs/angularjs/1.2.28/angular.min.js; 75 | pagespeed Library 99383 3_eiegK7c7oHDrpiEqdmc //ajax.googleapis.com/ajax/libs/angularjs/1.2.3/angular.min.js; 76 | pagespeed Library 190042 xhkz-5HcMnkskJcB70OU8 //ajax.googleapis.com/ajax/libs/angularjs/1.2.3/angular.min.js; 77 | pagespeed Library 99492 3HbrUt8iSvbdQ2UmX-H_D //ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js; 78 | pagespeed Library 190423 LaZGErquE2Rur-xImXoyp //ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js; 79 | pagespeed Library 99408 NkKIQwRFFHJJt8-nqEV3m //ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js; 80 | pagespeed Library 190398 egbgiXwZgHP_SA567Ox58 //ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js; 81 | pagespeed Library 99685 ewTB0lnqM_sf69ur8eD9z //ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.min.js; 82 | pagespeed Library 191246 QO2bzq3n4QAt3sh5v_xTD //ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.min.js; 83 | pagespeed Library 100035 vfcxtIyEdR0X7O9xUZz_Z //ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js; 84 | pagespeed Library 191906 km55CpKjuNNlzMJee-Axj //ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js; 85 | pagespeed Library 99628 7wZ51MzCUxQ2bnQN_efA6 //ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js; 86 | pagespeed Library 191360 fJkOzL6L6s7XYCpgoysuf //ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js; 87 | pagespeed Library 99644 VCdccBZuEUUBrgr3CgVii //ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js; 88 | pagespeed Library 191391 vVPDBHRh0MHqrTu4RfVgY //ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js; 89 | pagespeed Library 122813 UMHQR0M59rysg2aIPq1LH //ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js; 90 | pagespeed Library 241903 ubkFaIURAmArRV4VWQf3T //ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js; 91 | pagespeed Library 103797 S8X3H3LO2MkAb_UnUPqUm //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.1/angular.min.js; 92 | pagespeed Library 199083 HWsHLLT9fjJx0cVKyMjh3 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.1/angular.min.js; 93 | pagespeed Library 107898 L_cpVtz9z4L1go8CzoK9i //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.10/angular.min.js; 94 | pagespeed Library 207410 F33BY40cw1jQi23anKOSQ //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.10/angular.min.js; 95 | pagespeed Library 108206 WXnSxHPaY8oUpEKW1FnA2 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.11/angular.min.js; 96 | pagespeed Library 208441 2bQNzIgQ9T9RVTU3LgQDv //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.11/angular.min.js; 97 | pagespeed Library 109624 8grbG7Z0lEJYiZggg6TkN //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.12/angular.min.js; 98 | pagespeed Library 210977 6dtpX3Q8ynVZJzGYE3xp5 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.12/angular.min.js; 99 | pagespeed Library 109645 Hv80tDZSIwXm8sZWBx55P //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.13/angular.min.js; 100 | pagespeed Library 210998 jQC6q-8a8GUcQgbH8YJWX //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.13/angular.min.js; 101 | pagespeed Library 110494 37vcKGX65T0RPHaOo-bhv //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.14/angular.min.js; 102 | pagespeed Library 212815 Y3CatyT4RzgB0egRs-Jti //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.14/angular.min.js; 103 | pagespeed Library 110912 CnP4r9bMFjffeekZUnUd5 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.15/angular.min.js; 104 | pagespeed Library 213214 J2JfKo8X0mJw1wzKTyDl2 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.15/angular.min.js; 105 | pagespeed Library 111169 mEl4wGUMMtVRYYT1gVpct //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.16/angular.min.js; 106 | pagespeed Library 213961 NLxxHqKXLLYiZiXv8dGre //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.16/angular.min.js; 107 | pagespeed Library 111747 se4zt5h2y61Ib7HkQmFZ6 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js; 108 | pagespeed Library 214808 _qvXuBncgHV7wIxN-xbYl //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js; 109 | pagespeed Library 112988 n2gpBIAsotfGbfoKJGR4c //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js; 110 | pagespeed Library 216989 V1ipTkaM84TVN2StGvBuq //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js; 111 | pagespeed Library 112333 ebpxdRh2UWecXx8iwqbYg //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.19/angular.min.js; 112 | pagespeed Library 217171 xofWjMUD60RPgGZURK8W6 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.19/angular.min.js; 113 | pagespeed Library 103956 vbYkBIuB0UYD_CFre4ov9 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.2/angular.min.js; 114 | pagespeed Library 199338 JBelZ7POmkviAcR7P2EDq //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.2/angular.min.js; 115 | pagespeed Library 104540 erUdK5G008r11C_4KBYhe //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.3/angular.min.js; 116 | pagespeed Library 200596 yDN52nb79dRi1dYIgL3r1 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.3/angular.min.js; 117 | pagespeed Library 104464 fh8u1PqOsYhfXMOdEyQii //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.4/angular.min.js; 118 | pagespeed Library 200634 egRPVKDC7fEZer2iJIuQc //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.4/angular.min.js; 119 | pagespeed Library 105676 NTRcyw57xMqEqPzUf5MR4 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.5/angular.min.js; 120 | pagespeed Library 203017 t_xQlUllFp-tE52KqjcV8 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.5/angular.min.js; 121 | pagespeed Library 108571 bufnp4Fi4EQz_lTZ090yt //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.min.js; 122 | pagespeed Library 208496 o49yf-1iaamdHhyvG2m8j //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.min.js; 123 | pagespeed Library 108705 Dd9lEYoi7KLeaVyiGrexi //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.7/angular.min.js; 124 | pagespeed Library 208555 BqnI9dB3ZOq2HjCEJrvRo //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.7/angular.min.js; 125 | pagespeed Library 109212 TFbbZ_-0iDBHBX3jm1By6 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.8/angular.min.js; 126 | pagespeed Library 209328 1GSR72q_cmi8GXnCVhaD1 //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.8/angular.min.js; 127 | pagespeed Library 109042 domD3x-hxIlYyVB0BoMuO //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.9/angular.min.js; 128 | pagespeed Library 208627 RzHPAVbHXrWb-358TY77j //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.9/angular.min.js; 129 | pagespeed Library 117016 pr0rMosS9QplKEMwu11z- //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.min.js; 130 | pagespeed Library 227492 GQWtYxhDg_wm9Bwpfy5Ao //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.min.js; 131 | pagespeed Library 117457 qT6DSb7aWu5UY5Aj2hEmj //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.1/angular.min.js; 132 | pagespeed Library 228916 GrHniull5WbhHlqCulRPR //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.1/angular.min.js; 133 | pagespeed Library 119479 V6mXAZVdVdF8rXhZikwS- //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.2/angular.min.js; 134 | pagespeed Library 233161 wHo7MwJLfRPYbptELT-LD //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.2/angular.min.js; 135 | pagespeed Library 120060 MUwns74jPrGrjQV7Ha4yk //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.3/angular.min.js; 136 | pagespeed Library 234160 zxVru9v2qc0IxKLEu9i7o //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.3/angular.min.js; 137 | pagespeed Library 120537 StIZYPzsoewOdYJwz5hhX //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.4/angular.min.js; 138 | pagespeed Library 235560 8c_Vuf-JzpOQP9oZmkz4K //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.4/angular.min.js; 139 | pagespeed Library 122092 nL1CW9T9gaCt6H5S4tg9M //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.5/angular.min.js; 140 | pagespeed Library 239908 c3h_XwLrdHoPRkiKV_hbe //ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.5/angular.min.js; 141 | pagespeed Library 123076 YoGez3WupgowT8926ImNJ //ajax.googleapis.com/ajax/libs/angularjs/1.3.1/angular.min.js; 142 | pagespeed Library 242136 _yHeLQMZLchs10TqBmE3i //ajax.googleapis.com/ajax/libs/angularjs/1.3.1/angular.min.js; 143 | pagespeed Library 124933 0BgffIQujMaDJwsuFifws //ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js; 144 | pagespeed Library 248030 oyscyS69cwFF1yg9dHPMk //ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js; 145 | pagespeed Library 124993 wvkLUfELBxvqybVXyVs0h //ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.min.js; 146 | pagespeed Library 248108 a0ajJqr5oKIe8S2HTQ3Zd //ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.min.js; 147 | pagespeed Library 125136 Bu9u1Ss5IeoWXUu_dVVYe //ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js; 148 | pagespeed Library 248450 w3bVL95OmIPBbTfI_4bEJ //ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js; 149 | pagespeed Library 125149 3E3IBXmhABhQQrXmAQH85 //ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.min.js; 150 | pagespeed Library 248485 3copJob-uzAk4_BsDo1ek //ajax.googleapis.com/ajax/libs/angularjs/1.3.13/angular.min.js; 151 | pagespeed Library 125106 hLfG3---ZFAGn7v1yER-Z //ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js; 152 | pagespeed Library 248389 bwKXrd0tRSjzlBbW0NJrQ //ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js; 153 | pagespeed Library 123834 ucr0lS8OhyciNC3o1ztBv //ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js; 154 | pagespeed Library 244083 lUDSbl8T8v7r8iPtGR8p9 //ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js; 155 | pagespeed Library 123839 jLHkXcCCBC6GDIEfhaclM //ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js; 156 | pagespeed Library 244274 8s0IHTkQcvILeUBI14J5A //ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js; 157 | pagespeed Library 124280 zmYIktQ1CEZ48Peyxt2jo //ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js; 158 | pagespeed Library 245529 DqQyEdxsU0oupjhBO3Scx //ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js; 159 | pagespeed Library 124300 am8glCvOC9K4AB7PuTlGC //ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js; 160 | pagespeed Library 245600 2XVrKAEOsA-ChKnPBJZ9O //ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js; 161 | pagespeed Library 124593 Z0c3F-a7lQxIp6aQGKES5 //ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js; 162 | pagespeed Library 246825 3XmYitl5kBE_R5SMaZro9 //ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js; 163 | pagespeed Library 124894 aKPAO3MEjTzh1Y56rjQFr //ajax.googleapis.com/ajax/libs/angularjs/1.3.7/angular.min.js; 164 | pagespeed Library 247666 UGY1vOlgxTcd9t_7gvBBZ //ajax.googleapis.com/ajax/libs/angularjs/1.3.7/angular.min.js; 165 | pagespeed Library 124933 6TBFyE2os22fuiSb8GLS_ //ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js; 166 | pagespeed Library 247920 rR5hRow_gnl4mnYg3GHUA //ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js; 167 | pagespeed Library 124842 Wm9lTJ7jAJqbzezxDHEc_ //ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js; 168 | pagespeed Library 247825 fUWY3FVKVul7RzuWNxnd6 //ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js; 169 | pagespeed Library 125423 yWZpt0b5MnffdUj-AzI0Z //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.0/angular.min.js; 170 | pagespeed Library 248310 XKWdkV9wkf6-NYGebSJjq //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.0/angular.min.js; 171 | pagespeed Library 125523 105TtRqJRcb_43co0TRk0 //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.1/angular.min.js; 172 | pagespeed Library 248533 AqEeRi5zDm_FU35bon9-8 //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.1/angular.min.js; 173 | pagespeed Library 125647 HC2q30Tr1O3Y5jNe9lA1Z //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.2/angular.min.js; 174 | pagespeed Library 248730 Jz4rma8bpBE5TrcG9TlxW //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.2/angular.min.js; 175 | pagespeed Library 140135 1QpgS94oPHSynoG-6KT2u //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.3/angular.min.js; 176 | pagespeed Library 270950 FsxkAxvcwBYaL8sAwF1Ck //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.3/angular.min.js; 177 | pagespeed Library 140405 ngcrgeWWnnXamfIY-hGSy //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.4/angular.min.js; 178 | pagespeed Library 271361 8ZQORYtMv2_PJucLBiqEp //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.4/angular.min.js; 179 | pagespeed Library 140703 IEziu1BGrTpBXuPzLZQ4I //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.min.js; 180 | pagespeed Library 272086 SL8wdNMDccLfbLal0f8UL //ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.min.js; 181 | pagespeed Library 361 EEGXcpd25odC2D8NXPgv3 //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.0/CFInstall.min.js; 182 | pagespeed Library 484 FklzsFQn8OqU_jH1-22na //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.0/CFInstall.min.js; 183 | pagespeed Library 386 mk4cZTadeo6xP68ZAwM8N //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.1/CFInstall.min.js; 184 | pagespeed Library 535 bz_AHgKyu5OHUvJlTlNDs //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.1/CFInstall.min.js; 185 | pagespeed Library 386 mk4cZTadeo6xP68ZAwM8N //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js; 186 | pagespeed Library 535 bz_AHgKyu5OHUvJlTlNDs //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js; 187 | pagespeed Library 386 mk4cZTadeo6xP68ZAwM8N //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js; 188 | pagespeed Library 535 bz_AHgKyu5OHUvJlTlNDs //ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js; 189 | pagespeed Library 119439 2d8s3pxE0_M3BcL92IACE //ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js; 190 | pagespeed Library 190924 OhkOEhOPwsbis2g7d1yaI //ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js; 191 | pagespeed Library 120168 n9Qre6rI0ucjWndLx6uqq //ajax.googleapis.com/ajax/libs/dojo/1.10.1/dojo/dojo.js; 192 | pagespeed Library 191897 2N3bqARby13zwOP4aUGvt //ajax.googleapis.com/ajax/libs/dojo/1.10.1/dojo/dojo.js; 193 | pagespeed Library 120148 MMMCsFSZ75vevWKkyJBJ5 //ajax.googleapis.com/ajax/libs/dojo/1.10.2/dojo/dojo.js; 194 | pagespeed Library 191857 KdySskCvEGOSFBbJB3sIY //ajax.googleapis.com/ajax/libs/dojo/1.10.2/dojo/dojo.js; 195 | pagespeed Library 120148 -rTqBV_uDhJsx-UH8RvG3 //ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js; 196 | pagespeed Library 191857 ah9l4t3uuj9wo_FSGY9Sg //ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js; 197 | pagespeed Library 120148 6vf6hTeg3K7i4IrY6cYaI //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js; 198 | pagespeed Library 191857 K4pkQc4ZtWTZrs2yUsH0T //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js; 199 | pagespeed Library 76156 WDsXgZZ4IxyiTkINjnKom //ajax.googleapis.com/ajax/libs/dojo/1.1.1/dojo/dojo.js; 200 | pagespeed Library 82946 cSY5PX3fHAOxQiohPjk4A //ajax.googleapis.com/ajax/libs/dojo/1.1.1/dojo/dojo.js; 201 | pagespeed Library 78217 Ljoh6F8z6k5l7uuX1jLd5 //ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.js; 202 | pagespeed Library 85101 08kBEWN2UXmbd5YY1pEzH //ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.js; 203 | pagespeed Library 78082 ygI64s242GdbSek6uZH-p //ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.js; 204 | pagespeed Library 84982 bCiPTK9Dl4C6uGrYsy3oN //ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.js; 205 | pagespeed Library 80897 sdxF7wWGvOEk7dvKguUmP //ajax.googleapis.com/ajax/libs/dojo/1.3.0/dojo/dojo.js; 206 | pagespeed Library 88163 zoomUy0DEWfVRo4AVuery //ajax.googleapis.com/ajax/libs/dojo/1.3.0/dojo/dojo.js; 207 | pagespeed Library 80966 N04kLjnFh7b_fSXxQ2VSM //ajax.googleapis.com/ajax/libs/dojo/1.3.1/dojo/dojo.js; 208 | pagespeed Library 88247 9WYIh3fhReMYt1UycKf8L //ajax.googleapis.com/ajax/libs/dojo/1.3.1/dojo/dojo.js; 209 | pagespeed Library 80988 wJBMjVoWefHYLz5Y3Du-V //ajax.googleapis.com/ajax/libs/dojo/1.3.2/dojo/dojo.js; 210 | pagespeed Library 88269 eTnnS6e6QRMS0A29VnZ9a //ajax.googleapis.com/ajax/libs/dojo/1.3.2/dojo/dojo.js; 211 | pagespeed Library 88739 PEQPeUdrHQ86SkMOE_DpU //ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.js; 212 | pagespeed Library 97360 8KW2cixQv7Lc7W_zyYKOd //ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.js; 213 | pagespeed Library 88743 tX9y-sZdSP970Na0OezQ- //ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/dojo.js; 214 | pagespeed Library 97364 N4hYF3_6WCtEv4vmE5P4q //ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/dojo.js; 215 | pagespeed Library 88743 kRrs4P0xWktIaJJhtdHP- //ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.js; 216 | pagespeed Library 97364 buMIjsy4RyFpo5orAfuGb //ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.js; 217 | pagespeed Library 89022 _jI1prMsMhsIq7QbbB4L1 //ajax.googleapis.com/ajax/libs/dojo/1.4.4/dojo/dojo.js; 218 | pagespeed Library 97643 cfDtvyJQJRGXtFXY160en //ajax.googleapis.com/ajax/libs/dojo/1.4.4/dojo/dojo.js; 219 | pagespeed Library 88997 MTM1UY5WFEBXbitrDiPp0 //ajax.googleapis.com/ajax/libs/dojo/1.4.5/dojo/dojo.js; 220 | pagespeed Library 97586 TTh0uluiUsuVWaDigs2nz //ajax.googleapis.com/ajax/libs/dojo/1.4.5/dojo/dojo.js; 221 | pagespeed Library 89011 fOafFvU4DUJ5DxEfHf7sX //ajax.googleapis.com/ajax/libs/dojo/1.4.6/dojo/dojo.js; 222 | pagespeed Library 97600 IBbQn5OzHpbiptPwnnnxt //ajax.googleapis.com/ajax/libs/dojo/1.4.6/dojo/dojo.js; 223 | pagespeed Library 89804 FyhcykLrLnJ2gjE6NjjwC //ajax.googleapis.com/ajax/libs/dojo/1.5.0/dojo/dojo.js; 224 | pagespeed Library 99072 CXzr8lZHVx5mAkmPYHR_z //ajax.googleapis.com/ajax/libs/dojo/1.5.0/dojo/dojo.js; 225 | pagespeed Library 89804 d0jFmjffRsCQAYBX7Icia //ajax.googleapis.com/ajax/libs/dojo/1.5.1/dojo/dojo.js; 226 | pagespeed Library 99072 6VYLS7JCDcYLF4LWnxb12 //ajax.googleapis.com/ajax/libs/dojo/1.5.1/dojo/dojo.js; 227 | pagespeed Library 90082 LjjarNGTWaf_Vq_xNXHOZ //ajax.googleapis.com/ajax/libs/dojo/1.5.2/dojo/dojo.js; 228 | pagespeed Library 99350 WbiXI3diH8I2-2ppwyueD //ajax.googleapis.com/ajax/libs/dojo/1.5.2/dojo/dojo.js; 229 | pagespeed Library 90065 EIIUcePntBDdalNkU857a //ajax.googleapis.com/ajax/libs/dojo/1.5.3/dojo/dojo.js; 230 | pagespeed Library 99301 plspm7NWi--vkXxK_dUxq //ajax.googleapis.com/ajax/libs/dojo/1.5.3/dojo/dojo.js; 231 | pagespeed Library 90077 fqCuqW_PRrVWfO6sDdxdG //ajax.googleapis.com/ajax/libs/dojo/1.5.4/dojo/dojo.js; 232 | pagespeed Library 99313 pQ_3u10JJ8tFHox-Gfpf3 //ajax.googleapis.com/ajax/libs/dojo/1.5.4/dojo/dojo.js; 233 | pagespeed Library 91163 jizFs3fI8QMu5ftGtU_91 //ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.js; 234 | pagespeed Library 100560 j6WKkHuJ9E2GmNUNK7AHR //ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.js; 235 | pagespeed Library 91326 ZG-YhW0bJXZmVCfoFaTrD //ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.js; 236 | pagespeed Library 100722 c0nxgbeisLwPtFO8Ce4Iq //ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.js; 237 | pagespeed Library 91340 Qpo4dDfbywgwdnB-YexaC //ajax.googleapis.com/ajax/libs/dojo/1.6.2/dojo/dojo.js; 238 | pagespeed Library 100628 2nmet64peYlFtTUs2kt6V //ajax.googleapis.com/ajax/libs/dojo/1.6.2/dojo/dojo.js; 239 | pagespeed Library 91352 ea8MUOfk9Cp5Sd3_NW123 //ajax.googleapis.com/ajax/libs/dojo/1.6.3/dojo/dojo.js; 240 | pagespeed Library 100640 Uy-Dv1jEeCcyk1LIap--U //ajax.googleapis.com/ajax/libs/dojo/1.6.3/dojo/dojo.js; 241 | pagespeed Library 130232 rGDzVPegqrAHtJnq08Sl4 //ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.js; 242 | pagespeed Library 151781 h4MKVCPE7_Y0h6oy-RFOU //ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.js; 243 | pagespeed Library 130255 yIVgpE36zMpQ_47sdwXzg //ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js; 244 | pagespeed Library 151808 1yuT1dfVssOKm97Xd8zTd //ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js; 245 | pagespeed Library 137397 4fdto7Klq9aH4zKp3sLls //ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js; 246 | pagespeed Library 160542 5OSpFddm8GDBYTvD0e3mW //ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js; 247 | pagespeed Library 138501 pCH5tIKy93g8IpQD34T0r //ajax.googleapis.com/ajax/libs/dojo/1.7.3/dojo/dojo.js; 248 | pagespeed Library 161849 8Us6bK4NEGyN_ghJXD5De //ajax.googleapis.com/ajax/libs/dojo/1.7.3/dojo/dojo.js; 249 | pagespeed Library 138513 uG4TUm91V40uZ0ZRn0lT4 //ajax.googleapis.com/ajax/libs/dojo/1.7.4/dojo/dojo.js; 250 | pagespeed Library 161859 Fv7D61dczhJxYB3r8YhW7 //ajax.googleapis.com/ajax/libs/dojo/1.7.4/dojo/dojo.js; 251 | pagespeed Library 102436 OdPg8csC69sTxcHCbac1_ //ajax.googleapis.com/ajax/libs/dojo/1.7.5/dojo/dojo.js; 252 | pagespeed Library 162707 p0oFaWPsqByTqdcyshMLs //ajax.googleapis.com/ajax/libs/dojo/1.7.5/dojo/dojo.js; 253 | pagespeed Library 102875 m_LvqxtGRKr-dg6dD1jOI //ajax.googleapis.com/ajax/libs/dojo/1.7.6/dojo/dojo.js; 254 | pagespeed Library 163464 A2jDKM9A6mfM0gVCwyKbO //ajax.googleapis.com/ajax/libs/dojo/1.7.6/dojo/dojo.js; 255 | pagespeed Library 103177 iGNV2_r2gevkLgaGfq1NH //ajax.googleapis.com/ajax/libs/dojo/1.7.7/dojo/dojo.js; 256 | pagespeed Library 163924 mn_IHZRrxyUK5Jsp0GOIT //ajax.googleapis.com/ajax/libs/dojo/1.7.7/dojo/dojo.js; 257 | pagespeed Library 103177 LR1PiklitsS6HshRwZzSN //ajax.googleapis.com/ajax/libs/dojo/1.7.8/dojo/dojo.js; 258 | pagespeed Library 163924 E2Njh6ypT7-3epi6jajr0 //ajax.googleapis.com/ajax/libs/dojo/1.7.8/dojo/dojo.js; 259 | pagespeed Library 155506 A9HtdXhu2WBKUwGdTMqem //ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.js; 260 | pagespeed Library 182635 6a9teMlbmllK2PcPDctU2 //ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.js; 261 | pagespeed Library 114387 XgLI_L4lXJKPCl-bq4b_5 //ajax.googleapis.com/ajax/libs/dojo/1.8.1/dojo/dojo.js; 262 | pagespeed Library 183056 Vq7WQ8kJPClNY1BP0N4CP //ajax.googleapis.com/ajax/libs/dojo/1.8.1/dojo/dojo.js; 263 | pagespeed Library 116334 sr1mLf9j5NMIkPvXAdmpU //ajax.googleapis.com/ajax/libs/dojo/1.8.10/dojo/dojo.js; 264 | pagespeed Library 186635 mXRyowZfqsPMi_No93SZE //ajax.googleapis.com/ajax/libs/dojo/1.8.10/dojo/dojo.js; 265 | pagespeed Library 114510 6eqA_WhassWmgLV4m8y60 //ajax.googleapis.com/ajax/libs/dojo/1.8.2/dojo/dojo.js; 266 | pagespeed Library 183235 QmSoUEy9dAJamQT2GOd2J //ajax.googleapis.com/ajax/libs/dojo/1.8.2/dojo/dojo.js; 267 | pagespeed Library 114510 aF-kWs_JEKdCPhjtqgta3 //ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js; 268 | pagespeed Library 183235 TYswZL3mT8lg7kwyjjY9h //ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js; 269 | pagespeed Library 115108 QbrGOD9UU9J2SRBaL8oSf //ajax.googleapis.com/ajax/libs/dojo/1.8.4/dojo/dojo.js; 270 | pagespeed Library 184165 s9kma4dN2jgY-nZZKLMM7 //ajax.googleapis.com/ajax/libs/dojo/1.8.4/dojo/dojo.js; 271 | pagespeed Library 115110 3ECfK3X7_aDG_q5Ud99Hq //ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojo/dojo.js; 272 | pagespeed Library 184167 nrXvNlHXKiNxiUiVHyexD //ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojo/dojo.js; 273 | pagespeed Library 115837 IWAkCGO7zangImpU_EZkq //ajax.googleapis.com/ajax/libs/dojo/1.8.6/dojo/dojo.js; 274 | pagespeed Library 185973 HLjjdq2hpdFiGsmS6-o_T //ajax.googleapis.com/ajax/libs/dojo/1.8.6/dojo/dojo.js; 275 | pagespeed Library 116352 y7d3khLy967H76KXqQ2Xu //ajax.googleapis.com/ajax/libs/dojo/1.8.7/dojo/dojo.js; 276 | pagespeed Library 186674 D5lAVOYutDAvPek_PW3-x //ajax.googleapis.com/ajax/libs/dojo/1.8.7/dojo/dojo.js; 277 | pagespeed Library 116333 bEC1-ZlIk7Cg8Pf1i19uQ //ajax.googleapis.com/ajax/libs/dojo/1.8.8/dojo/dojo.js; 278 | pagespeed Library 186634 c7YveXmTiX7QObzbjIj2s //ajax.googleapis.com/ajax/libs/dojo/1.8.8/dojo/dojo.js; 279 | pagespeed Library 116333 dYGoNYKDml6O5_yO0lCaY //ajax.googleapis.com/ajax/libs/dojo/1.8.9/dojo/dojo.js; 280 | pagespeed Library 186634 rCEdKHRZ4jlix50WzH4Wf //ajax.googleapis.com/ajax/libs/dojo/1.8.9/dojo/dojo.js; 281 | pagespeed Library 116984 Y60s03j7DsTVafyLhzJY0 //ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js; 282 | pagespeed Library 186620 uAyTkLuRP_zhVci02asQq //ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js; 283 | pagespeed Library 117022 jHs7tYBnHUfBmMSUrYBbT //ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js; 284 | pagespeed Library 186657 ohQTNOs6Ph1sXSqwvWELF //ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js; 285 | pagespeed Library 117435 AWWBNLZVAKroTTMiI62FR //ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/dojo.js; 286 | pagespeed Library 187308 lsX6AixTCIdPvz997woKN //ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/dojo.js; 287 | pagespeed Library 117681 8Yt-_fggWOcPuF8afQA7c //ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js; 288 | pagespeed Library 188393 76jV_xkKYxpqwxqT20Wtr //ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js; 289 | pagespeed Library 118134 qD9cE2I7UTwhmk4Qhw-NS //ajax.googleapis.com/ajax/libs/dojo/1.9.4/dojo/dojo.js; 290 | pagespeed Library 189005 J_BVqKneNpNKABIaFJunK //ajax.googleapis.com/ajax/libs/dojo/1.9.4/dojo/dojo.js; 291 | pagespeed Library 118114 RqzYuluYH0dd6yeJEY2mD //ajax.googleapis.com/ajax/libs/dojo/1.9.5/dojo/dojo.js; 292 | pagespeed Library 188965 ZgoDEouxKHfTXm4sT69p0 //ajax.googleapis.com/ajax/libs/dojo/1.9.5/dojo/dojo.js; 293 | pagespeed Library 118114 GRiCLAibhdGPTKPavsVsd //ajax.googleapis.com/ajax/libs/dojo/1.9.6/dojo/dojo.js; 294 | pagespeed Library 188965 1THUAR5QNFY5jrrYXYI9p //ajax.googleapis.com/ajax/libs/dojo/1.9.6/dojo/dojo.js; 295 | pagespeed Library 118114 9quyTsw559tC0FT7vVoYL //ajax.googleapis.com/ajax/libs/dojo/1.9.7/dojo/dojo.js; 296 | pagespeed Library 188965 Rf8qCGmZ4plKyv5LmxPha //ajax.googleapis.com/ajax/libs/dojo/1.9.7/dojo/dojo.js; 297 | pagespeed Library 80618 wiMSlbd-LUNjaSAm_2QvX //ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core.js; 298 | pagespeed Library 100811 G4yQP3YfUnMTbwpuqVw1g //ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core.js; 299 | pagespeed Library 85666 1q2zcwXHR-jNoSIG-QlqD //ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js; 300 | pagespeed Library 106850 NVS9m8BVq8woVh1_8sYvw //ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js; 301 | pagespeed Library 92896 EP2UzSkIeDw4ly08GjZq9 //ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js; 302 | pagespeed Library 145182 dwlT0HegN-tLLEncKN5mj //ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js; 303 | pagespeed Library 92934 hJPIhFzu5k3thSngFf0y5 //ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js; 304 | pagespeed Library 145238 QtNbermdLmEB84VIIhIj8 //ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js; 305 | pagespeed Library 92977 ZzSiN_5WhqAqNV85b7np5 //ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js; 306 | pagespeed Library 145246 0dcX4e6D4exP2eSKlFlvf //ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js; 307 | pagespeed Library 96294 VDIv7VBTRRKGg_HTJGCLc //ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js; 308 | pagespeed Library 149427 QDBQnYGWCu035pL8VdxeH //ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js; 309 | pagespeed Library 95699 YSzgc-BSX9owVSSkqZSVh //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js; 310 | pagespeed Library 148735 hb8INJNCRO9x2NTALBhLh //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js; 311 | pagespeed Library 95844 J-8M9bCq0jjR22J-6z4me //ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js; 312 | pagespeed Library 149027 5VTruuXjj3yVRDadYyEJF //ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js; 313 | pagespeed Library 53817 CHO8IGIIn52uDL3Cn_eKT //ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js; 314 | pagespeed Library 53818 4I3T218i0QME3bWMaaGGS //ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js; 315 | pagespeed Library 55516 xDZTqrkpehIJGBiwJH9lw //ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js; 316 | pagespeed Library 55517 4veNJCwHYfnB2qxms9bi3 //ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js; 317 | pagespeed Library 54579 1DgH0Pe7MP9g20UsUtYM9 //ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js; 318 | pagespeed Library 70568 vhkQWrQwQ20G1Ii2YVZqa //ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js; 319 | pagespeed Library 54823 gCotACA2NuzKNL0BVMsoQ //ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js; 320 | pagespeed Library 70878 TNPUyAC-OSGYlFIGvr-uh //ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js; 321 | pagespeed Library 56804 eWR5IUrZrfTrBmtsWzxIG //ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js; 322 | pagespeed Library 73287 dnkLq1BuzXA44tLim2JwS //ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js; 323 | pagespeed Library 69329 U-bhIUnvCxt1H7doHbQQd //ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js; 324 | pagespeed Library 95717 zp18PNbMURqnkVePWw37S //ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js; 325 | pagespeed Library 70335 mrZY8KDroOVUGDvE1URHs //ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js; 326 | pagespeed Library 97189 YF6tjIMaALRAXGxgWW_BU //ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js; 327 | pagespeed Library 71665 fJ_6UN6xpQM7D3m83SxqP //ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js; 328 | pagespeed Library 99739 x4zS-V46Aap_8bOgfPiel //ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js; 329 | pagespeed Library 77224 LFJqJRRFdP4xuf2CR4U7y //ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js; 330 | pagespeed Library 108157 1GaxOviWryWkivFcizA15 //ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js; 331 | pagespeed Library 78078 ZYNEJxx-ya0kaMsb_Q4EP //ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js; 332 | pagespeed Library 109491 DcNBcggfueO21vtSu6ZMI //ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js; 333 | pagespeed Library 83995 m_IolgOoBMIO2TPAYlygB //ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js; 334 | pagespeed Library 122089 GW6LQcowb5eZ1ZQOMlp8p //ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js; 335 | pagespeed Library 84891 kYkDJlOiOCZTXc13-9tmR //ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js; 336 | pagespeed Library 124104 93QXvdE4OvKh89qitr-tk //ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js; 337 | pagespeed Library 85556 Cvrd10MtaalnOsZR6hIBH //ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js; 338 | pagespeed Library 124968 HSb2n8EgwS9ZxEvk8up-Q //ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js; 339 | pagespeed Library 90153 Fr2S1RBIV5DqkqM01hB-A //ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js; 340 | pagespeed Library 132323 Ib2Y-FDNK8ff9Y2Exa2cm //ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js; 341 | pagespeed Library 90972 kEcFWezj2rNCjriYNqbJS //ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js; 342 | pagespeed Library 133626 HaQayjWLJC3vDOHmbLYl8 //ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js; 343 | pagespeed Library 91186 bThpIvFEiGGGtHmglvncQ //ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js; 344 | pagespeed Library 134184 lPlXqlna4QaHkoKDcyX0w //ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js; 345 | pagespeed Library 91555 HhomyZY7oltt1jAP3QlBm //ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js; 346 | pagespeed Library 134689 4ClOf2BBgJNQhh544Iww7 //ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js; 347 | pagespeed Library 91597 qHARgGqbq1pOCOFGt0AlZ //ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js; 348 | pagespeed Library 134748 R3AvTjSp_a0jrsC0Q3IQ7 //ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js; 349 | pagespeed Library 93966 OyE9SSn-85KEYz7hiz99a //ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js; 350 | pagespeed Library 138925 cZf2_qLAqlYicNS26Zlbm //ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js; 351 | pagespeed Library 93812 Fmv3WDC1m8M7Y_UP_DogE //ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js; 352 | pagespeed Library 138572 WXQHqa4xFmTulF4GlS_PQ //ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js; 353 | pagespeed Library 94784 TiC1blcYSbPE67s8_lc9Z //ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js; 354 | pagespeed Library 140797 Nl3dteqZGnHHJYtQrVqJJ //ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js; 355 | pagespeed Library 92501 J8KF47pYOqQh_1NL9VAHk //ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js; 356 | pagespeed Library 140967 3GI5yaFLiv-Ws-4TDSFiW //ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js; 357 | pagespeed Library 92738 4e-7-QCeRWX5f8gShfbxO //ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js; 358 | pagespeed Library 141488 rUQ_fz2Uj8xAPNuEoAov5 //ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js; 359 | pagespeed Library 93382 Gy0gWi7liObj2mlrENZWD //ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js; 360 | pagespeed Library 143631 HblgdAtz3p9uDJWDfWfR5 //ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js; 361 | pagespeed Library 93583 0IhQ85x_cuH6iqWO4uEuA //ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js; 362 | pagespeed Library 143919 zhCJLkOkL7q7XSiNa7UFl //ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js; 363 | pagespeed Library 92948 a-tJGu7l62GCHwgE3Fu3a //ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js; 364 | pagespeed Library 143880 Jla0mogOKBszE8Cmev9qD //ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js; 365 | pagespeed Library 92509 roLDJ9nOeupp38sHEs78r //ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js; 366 | pagespeed Library 144177 7SwGVKxMkQKrYxPEJRCLK //ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js; 367 | pagespeed Library 82974 7Cx1EzX70319DS3eTBgKd //ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js; 368 | pagespeed Library 129816 TAwBsXACWvuLlvx2NnkGd //ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js; 369 | pagespeed Library 83391 X1r2P4YQdv40P1B3kFfN_ //ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js; 370 | pagespeed Library 130442 y0jvgww76q2F389eW0dKM //ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js; 371 | pagespeed Library 83373 V70dsxWpyc-43smsBkmHm //ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js; 372 | pagespeed Library 130431 YgZTSMAdz1Ld2o7NjSWDX //ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js; 373 | pagespeed Library 83484 N_RxtChr1k1qwObHaRxkE //ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js; 374 | pagespeed Library 130520 jl1IVFjnL2K_a4QXrzSxq //ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js; 375 | pagespeed Library 83529 oXInz6x9TTm0VTisHJdX4 //ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js; 376 | pagespeed Library 131130 _YQPRQkWI_tgUodOUWgcx //ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js; 377 | pagespeed Library 84159 OH66oSK0of_9zDfIzykeV //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js; 378 | pagespeed Library 132061 57gVchIV6eCk1EXuJWYMY //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js; 379 | pagespeed Library 84234 i6FmF6RqXu7ms5FO_JWdB //ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js; 380 | pagespeed Library 132224 ckmji5yRm39F0JCpFLP25 //ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js; 381 | pagespeed Library 193066 pkv8dHWLVaOlDGcgh0PYe //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.0/jquery.mobile.min.js; 382 | pagespeed Library 249714 vbEkvUASwklpHsrZJQ0ER //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.0/jquery.mobile.min.js; 383 | pagespeed Library 194483 EV56C-oVJj2kIYZg4sSKL //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.1/jquery.mobile.min.js; 384 | pagespeed Library 252054 LHV2CoDkvIoW06XBSGs36 //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.1/jquery.mobile.min.js; 385 | pagespeed Library 195465 2p8fHvH5zYmXRR4ZAaSKZ //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.2/jquery.mobile.min.js; 386 | pagespeed Library 253812 y49SLXmv7KdaloOwSWJbg //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.2/jquery.mobile.min.js; 387 | pagespeed Library 197924 bXI3XpEG4UwfqHjwcBzwb //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.js; 388 | pagespeed Library 257423 YaWfPuPblcn4YeTwq7QgX //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.js; 389 | pagespeed Library 199240 mv9LcZiTNZFuKNpoyT0us //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.4/jquery.mobile.min.js; 390 | pagespeed Library 259100 Vqcoa1jFQUhddCZA95NFl //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.4/jquery.mobile.min.js; 391 | pagespeed Library 199950 0UCuYSy5uCRKFYele0_Ft //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js; 392 | pagespeed Library 260130 aor4Dszx7sJJt3SyzW3XC //ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js; 393 | pagespeed Library 226216 NbaCKynP9bSY_bT_tM6IK //ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js; 394 | pagespeed Library 287385 Cc7Mi-QsgYbeDyZj_L_cU //ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js; 395 | pagespeed Library 227104 HlasOSirfqAtDAPcIyKcy //ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js; 396 | pagespeed Library 288684 K4XcYYOapoPKx--p972T6 //ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js; 397 | pagespeed Library 227020 M-oDQ2lgQ_M45V1wjp4T- //ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js; 398 | pagespeed Library 289728 p2-5IswAKucN8P2nshOJO //ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js; 399 | pagespeed Library 227095 8oxCB8ix0bYVWgCnvMvzj //ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js; 400 | pagespeed Library 289581 UZGvymnh4n-BYG_DlCFJF //ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js; 401 | pagespeed Library 227562 frpMaULqmyoYM5N6ysKbz //ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js; 402 | pagespeed Library 290002 Nmk-lv0yuyc6KmP3KHBdc //ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js; 403 | pagespeed Library 236858 74YTfKuBXPYZRy1rkpHnR //ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js; 404 | pagespeed Library 301458 P9yDU2JOmOh9xsmO9a8Ot //ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js; 405 | pagespeed Library 237624 2Zsi-Z0kKK2IzT4Bn1svS //ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js; 406 | pagespeed Library 302733 JvwcOYdBobi0AtyyaLQEV //ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js; 407 | pagespeed Library 238874 e-HKoI4nbptR87biVti3C //ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js; 408 | pagespeed Library 305079 wUKpsxK1GoEv7kOSJXUYU //ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js; 409 | pagespeed Library 239337 E3rGywA0aXwPj9aqiDx26 //ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js; 410 | pagespeed Library 305580 H5kYPFY0mOkiYmXYuR1HA //ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js; 411 | pagespeed Library 182465 lt837EKiio_yQQEU8Xv8b //ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js; 412 | pagespeed Library 182465 m3np920BQuGC_RSM0EipD //ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js; 413 | pagespeed Library 183103 b8thXNhxhZKxXUl-PMJ-c //ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js; 414 | pagespeed Library 183103 0YwOtB66wAJJGm4tkzYs8 //ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js; 415 | pagespeed Library 187413 hLH5O4DDhN-Cr6V-N8-VY //ajax.googleapis.com/ajax/libs/jqueryui/1.6.0/jquery-ui.min.js; 416 | pagespeed Library 207463 oA3_Qh4HsRlhWqcDVnAQP //ajax.googleapis.com/ajax/libs/jqueryui/1.6.0/jquery-ui.min.js; 417 | pagespeed Library 184846 66zVyBtP8Yk-_C_wOK_eu //ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.min.js; 418 | pagespeed Library 205551 8ScQylGN8b7-OXF_ClBA8 //ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.min.js; 419 | pagespeed Library 185207 9s4W9Sj88wk3b3FWY6voW //ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js; 420 | pagespeed Library 205951 Dp8daGEZpMoQsy68Jym81 //ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js; 421 | pagespeed Library 185946 90fMFf4xc3DXmBXN4VW8Z //ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js; 422 | pagespeed Library 206746 LiBopvINn06WT2lU0qTZY //ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js; 423 | pagespeed Library 186010 sfw_bVxJ9tE3kXWz4FS9j //ajax.googleapis.com/ajax/libs/jqueryui/1.7.3/jquery-ui.min.js; 424 | pagespeed Library 206879 oFXq7qGBJjP9Tu__ST9Ie //ajax.googleapis.com/ajax/libs/jqueryui/1.7.3/jquery-ui.min.js; 425 | pagespeed Library 206232 It0ugMI29qRwKU36tuT5q //ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js; 426 | pagespeed Library 232419 b6QeOpUortNHO6FzGj8RK //ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js; 427 | pagespeed Library 191046 SPV25QUTpfYfHNH5Rs1tG //ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js; 428 | pagespeed Library 233272 6F8sfj-UwKLqyOZnMav52 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js; 429 | pagespeed Library 198132 pTqtYbO0RY7u8QcHvVcUv //ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js; 430 | pagespeed Library 242850 JH4I6bkSnHpCddTNQmjni //ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js; 431 | pagespeed Library 198980 N1Au557RuWY-m4msJvSV0 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js; 432 | pagespeed Library 243948 fZrgtBHo7QsfB2o8BsdFO //ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js; 433 | pagespeed Library 199278 CpEknSC6qaOnmjVsMeYvG //ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js; 434 | pagespeed Library 244320 c3qVq5r135f7orincApwG //ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js; 435 | pagespeed Library 199441 YfTRSoUxd90QKj2rSWDEa //ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js; 436 | pagespeed Library 244906 etvdO1g0bRaHvHXVH0-8a //ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js; 437 | pagespeed Library 200990 e2PmfTYsjAXVYjL7UfDpU //ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js; 438 | pagespeed Library 247082 BS6ArfF8NsGM0HvejnrTZ //ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js; 439 | pagespeed Library 201008 7g6FSzatkNbaF_B-YGluK //ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js; 440 | pagespeed Library 247161 x_iVqoa2wCU6JieE6Sh6r //ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js; 441 | pagespeed Library 201205 QjHMKHg65pljQ0VraU3L5 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js; 442 | pagespeed Library 247493 xxi19_ay9jB-mIOZvb15G //ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js; 443 | pagespeed Library 202108 k80ugxGHTini6he07G0zZ //ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js; 444 | pagespeed Library 248920 2FD7h5Lz6rq6eL0ySlZ-B //ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js; 445 | pagespeed Library 201628 oCFOgunoKNtBqIA_iJoFM //ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js; 446 | pagespeed Library 248375 _usAWwePhvYurp0PYObYG //ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js; 447 | pagespeed Library 201515 0rw8JAaVAogS9iQoooIu2 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.19/jquery-ui.min.js; 448 | pagespeed Library 248603 ErcNX7vD5J4TBttcyaCqb //ajax.googleapis.com/ajax/libs/jqueryui/1.8.19/jquery-ui.min.js; 449 | pagespeed Library 191670 bMpqLv-ZRP_QJYnnRaH5w //ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js; 450 | pagespeed Library 234037 SXMaXfpxjMx1fKkpN3Yyb //ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js; 451 | pagespeed Library 201527 -jNHpzrkXUXGa4IwSTD0C //ajax.googleapis.com/ajax/libs/jqueryui/1.8.20/jquery-ui.min.js; 452 | pagespeed Library 248683 WfZ6vyuOrrzyhnteKszx0 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.20/jquery-ui.min.js; 453 | pagespeed Library 201719 4JzLp_kt5sgkuDioybGx1 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js; 454 | pagespeed Library 248919 HpLKg13HRY3v9MW4AXmEM //ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js; 455 | pagespeed Library 202490 y2AI33IZ8DwnSgphKUyO_ //ajax.googleapis.com/ajax/libs/jqueryui/1.8.22/jquery-ui.min.js; 456 | pagespeed Library 249769 mov-71Md0CCmTJJut0HCU //ajax.googleapis.com/ajax/libs/jqueryui/1.8.22/jquery-ui.min.js; 457 | pagespeed Library 199863 4SumGLrINq5vW5TrJuQOh //ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js; 458 | pagespeed Library 246960 VfEAsOWKJnlvQAjNfbcee //ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js; 459 | pagespeed Library 199834 c4f-0_5pm2VMuyyEPO90I //ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js; 460 | pagespeed Library 246924 nfihSw0n7_qchCTIL6i8G //ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js; 461 | pagespeed Library 193562 WVw9XOdJfgfQK_f7cjWg5 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js; 462 | pagespeed Library 237172 b7gyviqN8m-IofZSuxqHW //ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js; 463 | pagespeed Library 195100 RYe5FZcP2QvqmgMVpb7VQ //ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js; 464 | pagespeed Library 238995 Lb4N82f69hbP-g9Hw5pMD //ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js; 465 | pagespeed Library 195922 oGAs30xzlQdMfLyotgxVs //ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js; 466 | pagespeed Library 240089 vhiZQcb3aacMIyAz6ORfs //ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js; 467 | pagespeed Library 197401 HKgCcV6rS9Co_A2wYd9Jl //ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js; 468 | pagespeed Library 241966 BtDDyw6QVPCd9R5Q6qD7t //ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js; 469 | pagespeed Library 197765 ddIoC1svKxPUPiiRewjWV //ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.min.js; 470 | pagespeed Library 242345 rRVS2S5QVcGh2cE2VWvw9 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.min.js; 471 | pagespeed Library 197930 AroRXjl-rlqGyonLd43k4 //ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js; 472 | pagespeed Library 242567 lyBkRETttHMDA1_yO-rZh //ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js; 473 | pagespeed Library 234803 JliGLm21C-wCP1PIizyQB //ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/jquery-ui.min.js; 474 | pagespeed Library 296527 nFeNWZuk87cUQJO0vGWzG //ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/jquery-ui.min.js; 475 | pagespeed Library 236134 pxa-bqaQs9CBskT7EEX1j //ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js; 476 | pagespeed Library 298521 FUqMhsuVnbfxiENswuGov //ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js; 477 | pagespeed Library 236760 SLLTG4aMa6Supg59YSTDA //ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js; 478 | pagespeed Library 299559 hYqZ6flep4N0KfxWktBF8 //ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js; 479 | pagespeed Library 65581 Vw7tmEGNAYF0N3ceNb13F //ajax.googleapis.com/ajax/libs/mootools/1.1.1/mootools-yui-compressed.js; 480 | pagespeed Library 74178 TtCK4dtAxdVJqaQ6Ps3Fj //ajax.googleapis.com/ajax/libs/mootools/1.1.1/mootools-yui-compressed.js; 481 | pagespeed Library 64867 NaKYZTwZiNvfWzAjeE051 //ajax.googleapis.com/ajax/libs/mootools/1.1.2/mootools-yui-compressed.js; 482 | pagespeed Library 74208 Vkvg9cDQ7-44XQAkSvwaF //ajax.googleapis.com/ajax/libs/mootools/1.1.2/mootools-yui-compressed.js; 483 | pagespeed Library 64446 1-C4on7CEaHndTpLwE7kh //ajax.googleapis.com/ajax/libs/mootools/1.2.1/mootools-yui-compressed.js; 484 | pagespeed Library 77339 DNWHc2y_fAZKe-jimlMDV //ajax.googleapis.com/ajax/libs/mootools/1.2.1/mootools-yui-compressed.js; 485 | pagespeed Library 65319 aBwWHSZcdxcrhAYPCAKqv //ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools-yui-compressed.js; 486 | pagespeed Library 78150 t1-EAfTPxGF_h2a8TwAQh //ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools-yui-compressed.js; 487 | pagespeed Library 66091 DTKOio4e86AIBw6ACxKMd //ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js; 488 | pagespeed Library 79087 bn35SfVMoz20TrFvwjaIr //ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js; 489 | pagespeed Library 66347 NDDCCw7c9b9xgNdD4X09Q //ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js; 490 | pagespeed Library 79414 trGiEu1jS_mC7EcWvuDDl //ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js; 491 | pagespeed Library 66632 20rDCF2V5gjuTKoUthTkp //ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools-yui-compressed.js; 492 | pagespeed Library 79795 iRVySa_bDZmJinL9al5n7 //ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools-yui-compressed.js; 493 | pagespeed Library 66874 Yzkow0eiWaMdYNqoOSjRx //ajax.googleapis.com/ajax/libs/mootools/1.2.6/mootools-yui-compressed.js; 494 | pagespeed Library 80107 N-adJrQ7TFCdAv3jQ8jFJ //ajax.googleapis.com/ajax/libs/mootools/1.2.6/mootools-yui-compressed.js; 495 | pagespeed Library 85097 L-6aJZRVg4-CPGh9GUO8z //ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js; 496 | pagespeed Library 106938 VLBWxkrOCQoquqfPov6c8 //ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js; 497 | pagespeed Library 87343 TjF5cl8LCVBd9Amk59yaI //ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools-yui-compressed.js; 498 | pagespeed Library 110509 XxdExyPGfMNpMzG_FqMWq //ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools-yui-compressed.js; 499 | pagespeed Library 87386 x61HP6fS-Q1Pu2SejKTJu //ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools-yui-compressed.js; 500 | pagespeed Library 110685 CJHhDSMGk81UDkJVT5RPR //ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools-yui-compressed.js; 501 | pagespeed Library 92295 68FUheqb34UwXCHLiKYpq //ajax.googleapis.com/ajax/libs/mootools/1.4.0/mootools-yui-compressed.js; 502 | pagespeed Library 117217 WvfHbm_96HhNq3fP38YwZ //ajax.googleapis.com/ajax/libs/mootools/1.4.0/mootools-yui-compressed.js; 503 | pagespeed Library 92570 BhFMo89hvH0PH_7WKG07x //ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js; 504 | pagespeed Library 117638 cPl1DxWDFf6FDz5QzqB7C //ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js; 505 | pagespeed Library 93229 uuF8BQ612zTh8D5gLRsM0 //ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js; 506 | pagespeed Library 118435 RVYIEDLuczfhY643JwY8v //ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js; 507 | pagespeed Library 93915 0DtEH_XeEQfLGq1PNFz8P //ajax.googleapis.com/ajax/libs/mootools/1.4.3/mootools-yui-compressed.js; 508 | pagespeed Library 119545 QuPRoBbowZ5XYjWA_v0rU //ajax.googleapis.com/ajax/libs/mootools/1.4.3/mootools-yui-compressed.js; 509 | pagespeed Library 94991 9VyQtOWN9vzRsMOeUFxF7 //ajax.googleapis.com/ajax/libs/mootools/1.4.4/mootools-yui-compressed.js; 510 | pagespeed Library 121179 V9UZEJgIDY_FWtazoAwAC //ajax.googleapis.com/ajax/libs/mootools/1.4.4/mootools-yui-compressed.js; 511 | pagespeed Library 95138 icm_DCUluUcUenBPZ6rzg //ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js; 512 | pagespeed Library 121398 GuLtWOuYUttFGvcMFAu6z //ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js; 513 | pagespeed Library 95852 rQk-1fWa-J4sxOs79UhMS //ajax.googleapis.com/ajax/libs/mootools/1.5.0/mootools-yui-compressed.js; 514 | pagespeed Library 123432 XHqrexYJFmPP8YA4kA5Ux //ajax.googleapis.com/ajax/libs/mootools/1.5.0/mootools-yui-compressed.js; 515 | pagespeed Library 97804 qg-8SMoh1WCu-ujhOpDXm //ajax.googleapis.com/ajax/libs/mootools/1.5.1/mootools-yui-compressed.js; 516 | pagespeed Library 126185 f3rW-Un_SBdTCLMW1kPYg //ajax.googleapis.com/ajax/libs/mootools/1.5.1/mootools-yui-compressed.js; 517 | pagespeed Library 93427 snzzmf7i-0McSxYgLPSTv //ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js; 518 | pagespeed Library 95054 XyJstXxXwpIWJ1OiX8FGp //ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js; 519 | pagespeed Library 105078 ZS_5UTXGpO8nctPE_U0NN //ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js; 520 | pagespeed Library 122711 89RrHCH18_-9o5aphXPCT //ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js; 521 | pagespeed Library 136121 EIGaMEVwhayeGIBSYLjWa //ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js; 522 | pagespeed Library 147206 FMBmcBR6a7aQy2ZCYtZrs //ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js; 523 | pagespeed Library 1060 tAWmweX9O9cu3xZatgdT3 //ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js; 524 | pagespeed Library 1041 7GR-8lL76Uc_FBr9mBUq6 //ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js; 525 | pagespeed Library 1214 9fTb8o24gz2lQnENNHXrT //ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js; 526 | pagespeed Library 1209 WjoTn8SPJ3r_7taSbDRyM //ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js; 527 | pagespeed Library 9510 lyxS9667ReH3VsQSi2taW //ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js; 528 | pagespeed Library 13459 vP0ZyxmhH4WTPGTdEABMT //ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js; 529 | pagespeed Library 10070 1RrDOSyVY3ZFkv3fykcOo //ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js; 530 | pagespeed Library 14489 _r2nBaWQduYU60l9HT-Oy //ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js; 531 | pagespeed Library 429773 LhVshh82V0TNA8hOIkzGl //ajax.googleapis.com/ajax/libs/threejs/r67/three.min.js; 532 | pagespeed Library 854563 K1p_lO6-WIX8qDPtzN_tK //ajax.googleapis.com/ajax/libs/threejs/r67/three.min.js; 533 | pagespeed Library 424406 JYm8QxzI3Ci5ZmewQ6_tW //ajax.googleapis.com/ajax/libs/threejs/r68/three.min.js; 534 | pagespeed Library 829946 _L4K9RopmxHMDOfOwi644 //ajax.googleapis.com/ajax/libs/threejs/r68/three.min.js; 535 | pagespeed Library 415778 6RFnjFdyCuRQhuKpA9-NE //ajax.googleapis.com/ajax/libs/threejs/r69/three.min.js; 536 | pagespeed Library 796214 cxiwa7Vg4Eokx2rGyMnX1 //ajax.googleapis.com/ajax/libs/threejs/r69/three.min.js; 537 | pagespeed Library 10878 pSBwDpEj3lMnauQftl4-g //ajax.googleapis.com/ajax/libs/webfont/1.0.0/webfont.js; 538 | pagespeed Library 26738 rRWG3uNem5Gfrhw01Pxy8 //ajax.googleapis.com/ajax/libs/webfont/1.0.0/webfont.js; 539 | pagespeed Library 10882 YIOn0JFvqD3SfhthNymZM //ajax.googleapis.com/ajax/libs/webfont/1.0.1/webfont.js; 540 | pagespeed Library 26717 XSeFVXozVj8s0kTJj2pz9 //ajax.googleapis.com/ajax/libs/webfont/1.0.1/webfont.js; 541 | pagespeed Library 12036 p_gJ_hejLHFmLneQ7KFpW //ajax.googleapis.com/ajax/libs/webfont/1.0.10/webfont.js; 542 | pagespeed Library 32326 9BWFdiDvnVmP2pDTyHm5N //ajax.googleapis.com/ajax/libs/webfont/1.0.10/webfont.js; 543 | pagespeed Library 12041 70e5bFEHAx0RZwL2yk9FR //ajax.googleapis.com/ajax/libs/webfont/1.0.11/webfont.js; 544 | pagespeed Library 32343 hol5JBLW8axt1bLH58uFZ //ajax.googleapis.com/ajax/libs/webfont/1.0.11/webfont.js; 545 | pagespeed Library 12085 g-XbPDkAppGk5_3KJ5zU7 //ajax.googleapis.com/ajax/libs/webfont/1.0.12/webfont.js; 546 | pagespeed Library 32401 idZWPPpaIwI-dTdxWfNEW //ajax.googleapis.com/ajax/libs/webfont/1.0.12/webfont.js; 547 | pagespeed Library 12291 UZGFgIZPzRpSr7mzFgZs3 //ajax.googleapis.com/ajax/libs/webfont/1.0.13/webfont.js; 548 | pagespeed Library 32812 WuvTQRouP8ukZS6uUWm48 //ajax.googleapis.com/ajax/libs/webfont/1.0.13/webfont.js; 549 | pagespeed Library 12321 oVR0n4GNizkcl5S7T3Qm2 //ajax.googleapis.com/ajax/libs/webfont/1.0.14/webfont.js; 550 | pagespeed Library 32883 fE2iOC7WHh_4pZjIR2Yk1 //ajax.googleapis.com/ajax/libs/webfont/1.0.14/webfont.js; 551 | pagespeed Library 12322 L7__Lh48WKKhKcd9gTPWC //ajax.googleapis.com/ajax/libs/webfont/1.0.15/webfont.js; 552 | pagespeed Library 32884 jBxkl_6_KdR_fB_XJB8lD //ajax.googleapis.com/ajax/libs/webfont/1.0.15/webfont.js; 553 | pagespeed Library 12710 RLnJvCRqQ0BI7-XDyw5ft //ajax.googleapis.com/ajax/libs/webfont/1.0.16/webfont.js; 554 | pagespeed Library 33707 F5I5N-I0-a1-peP2NJMgA //ajax.googleapis.com/ajax/libs/webfont/1.0.16/webfont.js; 555 | pagespeed Library 12736 Jd8k37NDnLD8wGsXOc9FF //ajax.googleapis.com/ajax/libs/webfont/1.0.17/webfont.js; 556 | pagespeed Library 33711 kOt44bBydzFlRPLllNEko //ajax.googleapis.com/ajax/libs/webfont/1.0.17/webfont.js; 557 | pagespeed Library 14347 5qoJQguYBn1Sv6-vOMdvz //ajax.googleapis.com/ajax/libs/webfont/1.0.18/webfont.js; 558 | pagespeed Library 37459 wTtgtqg1hBwSZ7iKSVxQx //ajax.googleapis.com/ajax/libs/webfont/1.0.18/webfont.js; 559 | pagespeed Library 15443 Dxkk5a_ndXDRza_Vxcnc0 //ajax.googleapis.com/ajax/libs/webfont/1.0.19/webfont.js; 560 | pagespeed Library 39676 xghc2yBcLmwdZK8UTtYfp //ajax.googleapis.com/ajax/libs/webfont/1.0.19/webfont.js; 561 | pagespeed Library 10995 LQvTLsPKUCXoG0KAUxmjI //ajax.googleapis.com/ajax/libs/webfont/1.0.2/webfont.js; 562 | pagespeed Library 26874 OGyFiWp89GHC_A7yIahW7 //ajax.googleapis.com/ajax/libs/webfont/1.0.2/webfont.js; 563 | pagespeed Library 15510 _rqUr4AxBd8yKtKh1AyVc //ajax.googleapis.com/ajax/libs/webfont/1.0.21/webfont.js; 564 | pagespeed Library 39757 O-MjXC0g8hpTc-HhT0sKJ //ajax.googleapis.com/ajax/libs/webfont/1.0.21/webfont.js; 565 | pagespeed Library 15598 mlMjAfg8l7HXm57RJT8v- //ajax.googleapis.com/ajax/libs/webfont/1.0.22/webfont.js; 566 | pagespeed Library 39972 Mydp8n62HILlmtgOqt6cs //ajax.googleapis.com/ajax/libs/webfont/1.0.22/webfont.js; 567 | pagespeed Library 16505 IUfIQeuSTjNbSniTaqRLl //ajax.googleapis.com/ajax/libs/webfont/1.0.23/webfont.js; 568 | pagespeed Library 43027 o6-YgpdqwA8CkG-5Lqaks //ajax.googleapis.com/ajax/libs/webfont/1.0.23/webfont.js; 569 | pagespeed Library 16677 Cdqg3NpayunHKW1g-hDrh //ajax.googleapis.com/ajax/libs/webfont/1.0.24/webfont.js; 570 | pagespeed Library 43533 tmyTyhyBO8mwaDpaDSmhu //ajax.googleapis.com/ajax/libs/webfont/1.0.24/webfont.js; 571 | pagespeed Library 16709 DOYx-gj3aNz_oBw1EoU-o //ajax.googleapis.com/ajax/libs/webfont/1.0.25/webfont.js; 572 | pagespeed Library 43577 g_9oNqycN30y3ohH4kXp6 //ajax.googleapis.com/ajax/libs/webfont/1.0.25/webfont.js; 573 | pagespeed Library 16122 5d0mJJX-aL_rWMddltN-4 //ajax.googleapis.com/ajax/libs/webfont/1.0.26/webfont.js; 574 | pagespeed Library 43596 JtJ5_vVuuZmTDshizag_B //ajax.googleapis.com/ajax/libs/webfont/1.0.26/webfont.js; 575 | pagespeed Library 16035 bgrQPZHbmcOBHbPC8r1gh //ajax.googleapis.com/ajax/libs/webfont/1.0.27/webfont.js; 576 | pagespeed Library 43346 sRZenLq4YOaLILOb0gH8Z //ajax.googleapis.com/ajax/libs/webfont/1.0.27/webfont.js; 577 | pagespeed Library 16045 ny8Von6OZz2vNtYp7XpBM //ajax.googleapis.com/ajax/libs/webfont/1.0.28/webfont.js; 578 | pagespeed Library 43368 roI6zK1ksUpgPTMlCOQJT //ajax.googleapis.com/ajax/libs/webfont/1.0.28/webfont.js; 579 | pagespeed Library 16189 T-HNHhdzLaGkfArWavjyK //ajax.googleapis.com/ajax/libs/webfont/1.0.29/webfont.js; 580 | pagespeed Library 43749 X1IgFDR5mEh-bAr6DcuB7 //ajax.googleapis.com/ajax/libs/webfont/1.0.29/webfont.js; 581 | pagespeed Library 11093 DhyPmROK7Q1gkTMuiCSk1 //ajax.googleapis.com/ajax/libs/webfont/1.0.3/webfont.js; 582 | pagespeed Library 27036 kJKkSPj3naZGLuAsV0YAR //ajax.googleapis.com/ajax/libs/webfont/1.0.3/webfont.js; 583 | pagespeed Library 16151 PbGbRhLOsC8OtJAIXi28U //ajax.googleapis.com/ajax/libs/webfont/1.0.30/webfont.js; 584 | pagespeed Library 44110 p6aEClImv-6kPGlfMeAvc //ajax.googleapis.com/ajax/libs/webfont/1.0.30/webfont.js; 585 | pagespeed Library 16566 fGuw6S_wSQc26GrPtkiek //ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js; 586 | pagespeed Library 44954 WKRZsMYzB4GAMjt9w-kPO //ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js; 587 | pagespeed Library 11920 J8NxqdaYMNNmttWBhkQbr //ajax.googleapis.com/ajax/libs/webfont/1.0.4/webfont.js; 588 | pagespeed Library 28969 6hd_E1AqxTwi515gpXNdr //ajax.googleapis.com/ajax/libs/webfont/1.0.4/webfont.js; 589 | pagespeed Library 11436 hhg-WKGxLy_0-cjXZ3KcI //ajax.googleapis.com/ajax/libs/webfont/1.0.5/webfont.js; 590 | pagespeed Library 30394 OnBl-B791p6jSy6Z62Nm1 //ajax.googleapis.com/ajax/libs/webfont/1.0.5/webfont.js; 591 | pagespeed Library 11636 vF5uH7EDjJF2_Ltbl-ese //ajax.googleapis.com/ajax/libs/webfont/1.0.6/webfont.js; 592 | pagespeed Library 30946 B9eQIErdX3zKUfqM7uXoK //ajax.googleapis.com/ajax/libs/webfont/1.0.6/webfont.js; 593 | pagespeed Library 11925 GQxo9H9-EcBB7V2VHcJ1x //ajax.googleapis.com/ajax/libs/webfont/1.0.9/webfont.js; 594 | pagespeed Library 31722 _F5ZlIDzz2URuZxL7zMn7 //ajax.googleapis.com/ajax/libs/webfont/1.0.9/webfont.js; 595 | pagespeed Library 16224 n6lNaYcxGBvtLQiCMPsoy //ajax.googleapis.com/ajax/libs/webfont/1.1.0/webfont.js; 596 | pagespeed Library 44958 Hd42Hg_sDMmx04okQfAvJ //ajax.googleapis.com/ajax/libs/webfont/1.1.0/webfont.js; 597 | pagespeed Library 16545 Pobe1buF0gaM3TSE2vCpl //ajax.googleapis.com/ajax/libs/webfont/1.1.1/webfont.js; 598 | pagespeed Library 45680 PuqcefSYMM1dJ-cRPy1zD //ajax.googleapis.com/ajax/libs/webfont/1.1.1/webfont.js; 599 | pagespeed Library 16636 MYIoAJACAh2xzuNly8TdA //ajax.googleapis.com/ajax/libs/webfont/1.1.2/webfont.js; 600 | pagespeed Library 45805 wBGdHWBNgl4sGnFryOp2d //ajax.googleapis.com/ajax/libs/webfont/1.1.2/webfont.js; 601 | pagespeed Library 18123 Vqq659OPpBWAUrftF2IoF //ajax.googleapis.com/ajax/libs/webfont/1.3.0/webfont.js; 602 | pagespeed Library 50633 jujnAckuwsPNUcgSFymmg //ajax.googleapis.com/ajax/libs/webfont/1.3.0/webfont.js; 603 | pagespeed Library 16777 kLTkkNasX5IzLpBQFKDhZ //ajax.googleapis.com/ajax/libs/webfont/1.4.1/webfont.js; 604 | pagespeed Library 59297 NSSEIdohFpKhz91-Ih6NA //ajax.googleapis.com/ajax/libs/webfont/1.4.1/webfont.js; 605 | pagespeed Library 17188 d7uU9sW_DbzaO-TCJZVSh //ajax.googleapis.com/ajax/libs/webfont/1.4.10/webfont.js; 606 | pagespeed Library 77442 WQogRZH-bTXAz4lKrZn-s //ajax.googleapis.com/ajax/libs/webfont/1.4.10/webfont.js; 607 | pagespeed Library 17736 I569T3VBwE4janLGQQzyK //ajax.googleapis.com/ajax/libs/webfont/1.4.2/webfont.js; 608 | pagespeed Library 59359 cY9rlGWmS4JL1IiOGH-ib //ajax.googleapis.com/ajax/libs/webfont/1.4.2/webfont.js; 609 | pagespeed Library 17056 7WCzNqZxeyojbMaupoNgz //ajax.googleapis.com/ajax/libs/webfont/1.4.6/webfont.js; 610 | pagespeed Library 60273 _P6zthD1cqGpD42tcQe_N //ajax.googleapis.com/ajax/libs/webfont/1.4.6/webfont.js; 611 | pagespeed Library 17070 GvpLIpoJf5eSlMEGEzh4d //ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js; 612 | pagespeed Library 60304 ZiUpjM8-zxOE0s7_1aPcW //ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js; 613 | pagespeed Library 17240 eBSferxs3ncv2F_7-R_PJ //ajax.googleapis.com/ajax/libs/webfont/1.4.8/webfont.js; 614 | pagespeed Library 78408 GT0L3GeTiQ-49DOWRh30A //ajax.googleapis.com/ajax/libs/webfont/1.4.8/webfont.js; 615 | pagespeed Library 16664 KMw83A3Qwc9KmCs6LBET6 //ajax.googleapis.com/ajax/libs/webfont/1.5.0/webfont.js; 616 | pagespeed Library 77316 oifTh6NQyOJ383xj5SMIC //ajax.googleapis.com/ajax/libs/webfont/1.5.0/webfont.js; 617 | pagespeed Library 16646 pfqCe1SJuyC2ZGC8GSdoe //ajax.googleapis.com/ajax/libs/webfont/1.5.1/webfont.js; 618 | pagespeed Library 77047 XqqnEmxBDzo1bSPxw2KV6 //ajax.googleapis.com/ajax/libs/webfont/1.5.1/webfont.js; 619 | pagespeed Library 17138 neIEZKc1kdmZSgB30gfOh //ajax.googleapis.com/ajax/libs/webfont/1.5.10/webfont.js; 620 | pagespeed Library 72696 _oNbPtGbF95_1ggPhQoOy //ajax.googleapis.com/ajax/libs/webfont/1.5.10/webfont.js; 621 | pagespeed Library 16646 B0JA7L0dYrSxwuXxcTcpE //ajax.googleapis.com/ajax/libs/webfont/1.5.2/webfont.js; 622 | pagespeed Library 77061 jCY5zO7hKv97zLzgdB0Hk //ajax.googleapis.com/ajax/libs/webfont/1.5.2/webfont.js; 623 | pagespeed Library 16674 e0KpDanHJ4XOBQD5KL_aK //ajax.googleapis.com/ajax/libs/webfont/1.5.3/webfont.js; 624 | pagespeed Library 76837 8h8FYgBvXwNLyUXUFn2Tg //ajax.googleapis.com/ajax/libs/webfont/1.5.3/webfont.js; 625 | pagespeed Library 16774 VwIADLRS35Fm3vMZt5Bbt //ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js; 626 | pagespeed Library 77128 aC44tT7ay-U2yWc8zd-aZ //ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js; 627 | -------------------------------------------------------------------------------- /fastcgi_params: -------------------------------------------------------------------------------- 1 | fastcgi_param QUERY_STRING $query_string; 2 | fastcgi_param REQUEST_METHOD $request_method; 3 | fastcgi_param CONTENT_TYPE $content_type; 4 | fastcgi_param CONTENT_LENGTH $content_length; 5 | 6 | fastcgi_param SCRIPT_FILENAME $request_filename; 7 | fastcgi_param SCRIPT_NAME $fastcgi_script_name; 8 | fastcgi_param REQUEST_URI $request_uri; 9 | fastcgi_param DOCUMENT_URI $document_uri; 10 | fastcgi_param DOCUMENT_ROOT $document_root; 11 | fastcgi_param SERVER_PROTOCOL $server_protocol; 12 | 13 | fastcgi_param GATEWAY_INTERFACE CGI/1.1; 14 | fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 15 | 16 | fastcgi_param REMOTE_ADDR $remote_addr; 17 | fastcgi_param REMOTE_PORT $remote_port; 18 | fastcgi_param SERVER_ADDR $server_addr; 19 | fastcgi_param SERVER_PORT $server_port; 20 | fastcgi_param SERVER_NAME $server_name; 21 | 22 | fastcgi_param HTTPS $https if_not_empty; 23 | 24 | # PHP only, required if PHP was built with --enable-force-cgi-redirect 25 | fastcgi_param REDIRECT_STATUS 200; 26 | fastcgi_param PATH_INFO $fastcgi_path_info; 27 | 28 | # comment out PATH_TRANSLATED line if /etc/php5/fpm/php.ini sets following: 29 | # cgi.fix_pathinfo=0 30 | # fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 31 | -------------------------------------------------------------------------------- /h5bp/README.md: -------------------------------------------------------------------------------- 1 | Component-config files 2 | ---------------------- 3 | 4 | Each of these files is intended to be included in a server block. Not all of 5 | the files here are used - they are available to be included as required. The 6 | `basic.conf` file includes the rules which are recommended to always be 7 | defined. 8 | -------------------------------------------------------------------------------- /h5bp/basic.conf: -------------------------------------------------------------------------------- 1 | # Basic h5bp rules 2 | 3 | include h5bp/directive-only/x-ua-compatible.conf; 4 | include h5bp/location/expires.conf; 5 | include h5bp/location/cross-domain-fonts.conf; 6 | include h5bp/location/protect-system-files.conf; 7 | -------------------------------------------------------------------------------- /h5bp/directive-only/cache-file-descriptors.conf: -------------------------------------------------------------------------------- 1 | # This tells Nginx to cache open file handles, "not found" errors, metadata about files and their permissions, etc. 2 | # 3 | # The upside of this is that Nginx can immediately begin sending data when a popular file is requested, 4 | # and will also know to immediately send a 404 if a file is missing on disk, and so on. 5 | # 6 | # However, it also means that the server won't react immediately to changes on disk, which may be undesirable. 7 | # 8 | # In the below configuration, inactive files are released from the cache after 20 seconds, whereas 9 | # active (recently requested) files are re-validated every 30 seconds. 10 | # 11 | # Descriptors will not be cached unless they are used at least 2 times within 20 seconds (the inactive time). 12 | # 13 | # A maximum of the 1000 most recently used file descriptors can be cached at any time. 14 | # 15 | # Production servers with stable file collections will definitely want to enable the cache. 16 | open_file_cache max=1000 inactive=20s; 17 | open_file_cache_valid 30s; 18 | open_file_cache_min_uses 2; 19 | open_file_cache_errors on; 20 | -------------------------------------------------------------------------------- /h5bp/directive-only/cross-domain-insecure.conf: -------------------------------------------------------------------------------- 1 | # Cross domain AJAX requests 2 | 3 | # **Security Warning** 4 | # Do not use this without understanding the consequences. 5 | # This will permit access from any other website. 6 | # 7 | add_header "Access-Control-Allow-Origin" "*"; 8 | 9 | # Instead of using this file, consider using a specific rule such as: 10 | # 11 | # Allow access based on [sub]domain: 12 | # add_header "Access-Control-Allow-Origin" "subdomain.example.com"; 13 | # OR 14 | # add_header "Access-Control-Allow-Origin" "*.example.com"; 15 | 16 | -------------------------------------------------------------------------------- /h5bp/directive-only/extra-security.conf: -------------------------------------------------------------------------------- 1 | # The X-Frame-Options header indicates whether a browser should be allowed 2 | # to render a page within a frame or iframe. 3 | add_header X-Frame-Options SAMEORIGIN; 4 | 5 | # MIME type sniffing security protection 6 | # There are very few edge cases where you wouldn't want this enabled. 7 | add_header X-Content-Type-Options nosniff; 8 | 9 | # The X-XSS-Protection header is used by Internet Explorer version 8+ 10 | # The header instructs IE to enable its inbuilt anti-cross-site scripting filter. 11 | add_header X-XSS-Protection "1; mode=block"; 12 | 13 | # with Content Security Policy (CSP) enabled (and a browser that supports it (http://caniuse.com/#feat=contentsecuritypolicy), 14 | # you can tell the browser that it can only download content from the domains you explicitly allow 15 | # CSP can be quite difficult to configure, and cause real issues if you get it wrong 16 | # There is website that helps you generate a policy here http://cspisawesome.com/ 17 | # add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' https://www.google-analytics.com;"; 18 | -------------------------------------------------------------------------------- /h5bp/directive-only/no-transform.conf: -------------------------------------------------------------------------------- 1 | # Prevent mobile network providers from modifying your site 2 | # 3 | # (!) If you are using `ngx_pagespeed`, please note that setting 4 | # the `Cache-Control: no-transform` response header will prevent 5 | # `PageSpeed` from rewriting `HTML` files, and, if 6 | # `pagespeed DisableRewriteOnNoTransform off` is not used, also 7 | # from rewriting other resources. 8 | # 9 | # https://developers.google.com/speed/pagespeed/module/configuration#notransform 10 | 11 | add_header "Cache-Control" "no-transform"; 12 | -------------------------------------------------------------------------------- /h5bp/directive-only/spdy.conf: -------------------------------------------------------------------------------- 1 | # Nginx's spdy module is compiled by default from 1.6 2 | # SPDY only works on HTTPS connections 3 | 4 | # Inform browser of SPDY availability 5 | add_header Alternate-Protocol 443:npn-spdy/3; 6 | 7 | # Adjust connection keepalive for SPDY clients: 8 | spdy_keepalive_timeout 300; # up from 180 secs default 9 | 10 | # enable SPDY header compression 11 | spdy_headers_comp 6; 12 | -------------------------------------------------------------------------------- /h5bp/directive-only/ssl-stapling.conf: -------------------------------------------------------------------------------- 1 | # OCSP stapling... 2 | ssl_stapling on; 3 | ssl_stapling_verify on; 4 | 5 | #trusted cert must be made up of your intermediate certificate followed by root certificate 6 | #ssl_trusted_certificate /path/to/ca.crt; 7 | 8 | resolver 8.8.8.8 8.8.4.4 216.146.35.35 216.146.36.36 valid=60s; 9 | resolver_timeout 2s; 10 | -------------------------------------------------------------------------------- /h5bp/directive-only/ssl.conf: -------------------------------------------------------------------------------- 1 | # Protect against the BEAST and POODLE attacks by not using SSLv3 at all. If you need to support older browsers (IE6) you may need to add 2 | # SSLv3 to the list of protocols below. 3 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 4 | 5 | # Ciphers set to best allow protection from Beast, while providing forwarding secrecy, as defined by Mozilla (Intermediate Set) - https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx 6 | ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; 7 | ssl_prefer_server_ciphers on; 8 | 9 | # Optimize SSL by caching session parameters for 10 minutes. This cuts down on the number of expensive SSL handshakes. 10 | # The handshake is the most CPU-intensive operation, and by default it is re-negotiated on every new/parallel connection. 11 | # By enabling a cache (of type "shared between all Nginx workers"), we tell the client to re-use the already negotiated state. 12 | # Further optimization can be achieved by raising keepalive_timeout, but that shouldn't be done unless you serve primarily HTTPS. 13 | ssl_session_cache shared:SSL:10m; # a 1mb cache can hold about 4000 sessions, so we can hold 40000 sessions 14 | ssl_session_timeout 24h; 15 | 16 | # SSL buffer size was added in 1.5.9 17 | #ssl_buffer_size 1400; # 1400 bytes to fit in one MTU 18 | 19 | # Session tickets appeared in version 1.5.9 20 | # 21 | # nginx does not auto-rotate session ticket keys: only a HUP / restart will do so and 22 | # when a restart is performed the previous key is lost, which resets all previous 23 | # sessions. The fix for this is to setup a manual rotation mechanism: 24 | # http://trac.nginx.org/nginx/changeset/1356a3b9692441e163b4e78be4e9f5a46c7479e9/nginx 25 | # 26 | # Note that you'll have to define and rotate the keys securely by yourself. In absence 27 | # of such infrastructure, consider turning off session tickets: 28 | #ssl_session_tickets off; 29 | 30 | # Use a higher keepalive timeout to reduce the need for repeated handshakes 31 | keepalive_timeout 300; # up from 75 secs default 32 | 33 | # HSTS (HTTP Strict Transport Security) 34 | # This header tells browsers to cache the certificate for a year and to connect exclusively via HTTPS. 35 | #add_header Strict-Transport-Security "max-age=31536000;"; 36 | # This version tells browsers to treat all subdomains the same as this site and to load exclusively over HTTPS 37 | #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; 38 | 39 | # This default SSL certificate will be served whenever the client lacks support for SNI (Server Name Indication). 40 | # Make it a symlink to the most important certificate you have, so that users of IE 8 and below on WinXP can see your main site without SSL errors. 41 | #ssl_certificate /etc/nginx/default_ssl.crt; 42 | #ssl_certificate_key /etc/nginx/default_ssl.key; 43 | 44 | # Consider using OCSP Stapling as shown in ssl-stapling.conf 45 | -------------------------------------------------------------------------------- /h5bp/directive-only/x-ua-compatible.conf: -------------------------------------------------------------------------------- 1 | # Force the latest IE version 2 | add_header "X-UA-Compatible" "IE=Edge"; 3 | -------------------------------------------------------------------------------- /h5bp/location/cache-busting.conf: -------------------------------------------------------------------------------- 1 | # Built-in filename-based cache busting 2 | 3 | # https://github.com/h5bp/html5-boilerplate/blob/5370479476dceae7cc3ea105946536d6bc0ee468/.htaccess#L403 4 | # This will route all requests for /css/style.20120716.css to /css/style.css 5 | # Read also this: github.com/h5bp/html5-boilerplate/wiki/cachebusting 6 | # This is not included by default, because it'd be better if you use the build 7 | # script to manage the file names. 8 | location ~* (.+)\.(?:\d+)\.(js|css|png|jpg|jpeg|gif)$ { 9 | try_files $uri $1.$2; 10 | } 11 | -------------------------------------------------------------------------------- /h5bp/location/cross-domain-fonts.conf: -------------------------------------------------------------------------------- 1 | # Cross domain webfont access 2 | location ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ { 3 | include h5bp/directive-only/cross-domain-insecure.conf; 4 | 5 | # Also, set cache rules for webfonts. 6 | # 7 | # See http://wiki.nginx.org/HttpCoreModule#location 8 | # And https://github.com/h5bp/server-configs/issues/85 9 | # And https://github.com/h5bp/server-configs/issues/86 10 | expires 1M; 11 | access_log off; 12 | add_header Cache-Control "public"; 13 | } 14 | -------------------------------------------------------------------------------- /h5bp/location/expires.conf: -------------------------------------------------------------------------------- 1 | # Expire rules for static content 2 | 3 | # No default expire rule. This config mirrors that of apache as outlined in the 4 | # html5-boilerplate .htaccess file. However, nginx applies rules by location, 5 | # the apache rules are defined by type. A consequence of this difference is that 6 | # if you use no file extension in the url and serve html, with apache you get an 7 | # expire time of 0s, with nginx you'd get an expire header of one month in the 8 | # future (if the default expire rule is 1 month). Therefore, do not use a 9 | # default expire rule with nginx unless your site is completely static 10 | 11 | # cache.appcache, your document html and data 12 | location ~* \.(?:manifest|appcache|html?|xml|json)$ { 13 | expires -1; 14 | access_log /var/log/nginx/static.log; 15 | } 16 | 17 | # Feed 18 | location ~* \.(?:rss|atom)$ { 19 | expires 1h; 20 | add_header Cache-Control "public"; 21 | } 22 | 23 | # Media: images, icons, video, audio, HTC 24 | location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { 25 | expires 1M; 26 | access_log off; 27 | add_header Cache-Control "public"; 28 | } 29 | 30 | # CSS and Javascript 31 | location ~* \.(?:css|js)$ { 32 | expires 1y; 33 | access_log off; 34 | add_header Cache-Control "public"; 35 | } 36 | 37 | # WebFonts 38 | # If you are NOT using cross-domain-fonts.conf, uncomment the following directive 39 | # location ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ { 40 | # expires 1M; 41 | # access_log off; 42 | # add_header Cache-Control "public"; 43 | # } 44 | -------------------------------------------------------------------------------- /h5bp/location/protect-system-files.conf: -------------------------------------------------------------------------------- 1 | # Prevent clients from accessing hidden files (starting with a dot) 2 | # This is particularly important if you store .htpasswd files in the site hierarchy 3 | location ~* (?:^|/)\. { 4 | deny all; 5 | } 6 | 7 | # Prevent clients from accessing to backup/config/source files 8 | location ~* (?:\.(?:bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)|~)$ { 9 | deny all; 10 | } 11 | -------------------------------------------------------------------------------- /mime.types: -------------------------------------------------------------------------------- 1 | types { 2 | 3 | # Audio 4 | audio/midi mid midi kar; 5 | audio/mp4 aac f4a f4b m4a; 6 | audio/mpeg mp3; 7 | audio/ogg oga ogg opus; 8 | audio/x-realaudio ra; 9 | audio/x-wav wav; 10 | 11 | # Images 12 | image/bmp bmp; 13 | image/gif gif; 14 | image/jpeg jpeg jpg; 15 | image/png png; 16 | image/svg+xml svg svgz; 17 | image/tiff tif tiff; 18 | image/vnd.wap.wbmp wbmp; 19 | image/webp webp; 20 | image/x-icon ico cur; 21 | image/x-jng jng; 22 | 23 | # JavaScript 24 | application/javascript js; 25 | application/json json; 26 | 27 | # Manifest files 28 | application/x-web-app-manifest+json webapp; 29 | text/cache-manifest manifest appcache; 30 | 31 | # Microsoft Office 32 | application/msword doc; 33 | application/vnd.ms-excel xls; 34 | application/vnd.ms-powerpoint ppt; 35 | application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; 36 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; 37 | application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; 38 | 39 | # Video 40 | video/3gpp 3gpp 3gp; 41 | video/mp4 mp4 m4v f4v f4p; 42 | video/mpeg mpeg mpg; 43 | video/ogg ogv; 44 | video/quicktime mov; 45 | video/webm webm; 46 | video/x-flv flv; 47 | video/x-mng mng; 48 | video/x-ms-asf asx asf; 49 | video/x-ms-wmv wmv; 50 | video/x-msvideo avi; 51 | 52 | # Web feeds 53 | application/xml atom rdf rss xml; 54 | application/xslt+xml xsl; 55 | 56 | # Web fonts 57 | application/font-woff woff; 58 | application/font-woff2 woff2; 59 | application/vnd.ms-fontobject eot; 60 | application/x-font-ttf ttc ttf; 61 | font/opentype otf; 62 | 63 | # Other 64 | application/java-archive jar war ear; 65 | application/mac-binhex40 hqx; 66 | application/pdf pdf; 67 | application/postscript ps eps ai; 68 | application/rtf rtf; 69 | application/vnd.wap.wmlc wmlc; 70 | application/xhtml+xml xhtml; 71 | application/vnd.google-earth.kml+xml kml; 72 | application/vnd.google-earth.kmz kmz; 73 | application/x-7z-compressed 7z; 74 | application/x-chrome-extension crx; 75 | application/x-opera-extension oex; 76 | application/x-xpinstall xpi; 77 | application/x-cocoa cco; 78 | application/x-java-archive-diff jardiff; 79 | application/x-java-jnlp-file jnlp; 80 | application/x-makeself run; 81 | application/x-perl pl pm; 82 | application/x-pilot prc pdb; 83 | application/x-rar-compressed rar; 84 | application/x-redhat-package-manager rpm; 85 | application/x-sea sea; 86 | application/x-shockwave-flash swf; 87 | application/x-stuffit sit; 88 | application/x-tcl tcl tk; 89 | application/x-x509-ca-cert der pem crt; 90 | application/x-bittorrent torrent; 91 | application/zip zip; 92 | 93 | application/octet-stream bin exe dll; 94 | application/octet-stream deb; 95 | application/octet-stream dmg; 96 | application/octet-stream iso img; 97 | application/octet-stream msi msp msm; 98 | application/octet-stream safariextz; 99 | 100 | text/css css; 101 | text/html html htm shtml; 102 | text/mathml mml; 103 | text/plain txt; 104 | text/vnd.sun.j2me.app-descriptor jad; 105 | text/vnd.wap.wml wml; 106 | text/vtt vtt; 107 | text/x-component htc; 108 | text/x-vcard vcf; 109 | 110 | } 111 | -------------------------------------------------------------------------------- /naxsi.rules: -------------------------------------------------------------------------------- 1 | # Sample rules file for default vhost. 2 | 3 | LearningMode; 4 | SecRulesEnabled; 5 | #SecRulesDisabled; 6 | DeniedUrl "/RequestDenied"; 7 | 8 | ## check rules 9 | CheckRule "$SQL >= 8" BLOCK; 10 | CheckRule "$RFI >= 8" BLOCK; 11 | CheckRule "$TRAVERSAL >= 4" BLOCK; 12 | CheckRule "$EVADE >= 4" BLOCK; 13 | CheckRule "$XSS >= 8" BLOCK; 14 | -------------------------------------------------------------------------------- /naxsi_core.rules: -------------------------------------------------------------------------------- 1 | ################################## 2 | ## INTERNAL RULES IDS:1-999 ## 3 | ################################## 4 | #@MainRule "msg:weird request, unable to parse" id:1; 5 | #@MainRule "msg:request too big, stored on disk and not parsed" id:2; 6 | #@MainRule "msg:invalid hex encoding, null bytes" id:10; 7 | #@MainRule "msg:unknown content-type" id:11; 8 | #@MainRule "msg:invalid formatted url" id:12; 9 | #@MainRule "msg:invalid POST format" id:13; 10 | #@MainRule "msg:invalid POST boundary" id:14; 11 | #@MainRule "msg:invalid JSON" id:15; 12 | #@MainRule "msg:empty POST" id:16; 13 | 14 | ################################## 15 | ## SQL Injections IDs:1000-1099 ## 16 | ################################## 17 | MainRule "rx:select|union|update|delete|insert|table|from|ascii|hex|unhex|drop" "msg:sql keywords" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:4" id:1000; 18 | MainRule "str:\"" "msg:double quote" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8,$XSS:8" id:1001; 19 | MainRule "str:0x" "msg:0x, possible hex encoding" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:2" id:1002; 20 | ## Hardcore rules 21 | MainRule "str:/*" "msg:mysql comment (/*)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1003; 22 | MainRule "str:*/" "msg:mysql comment (*/)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1004; 23 | MainRule "str:|" "msg:mysql keyword (|)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1005; 24 | MainRule "str:&&" "msg:mysql keyword (&&)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1006; 25 | ## end of hardcore rules 26 | MainRule "str:--" "msg:mysql comment (--)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:4" id:1007; 27 | MainRule "str:;" "msg:; in stuff" "mz:BODY|URL|ARGS" "s:$SQL:4,$XSS:8" id:1008; 28 | MainRule "str:=" "msg:equal in var, probable sql/xss" "mz:ARGS|BODY" "s:$SQL:2" id:1009; 29 | MainRule "str:(" "msg:parenthesis, probable sql/xss" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$SQL:4,$XSS:8" id:1010; 30 | MainRule "str:)" "msg:parenthesis, probable sql/xss" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$SQL:4,$XSS:8" id:1011; 31 | MainRule "str:'" "msg:simple quote" "mz:ARGS|BODY|URL|$HEADERS_VAR:Cookie" "s:$SQL:4,$XSS:8" id:1013; 32 | MainRule "str:," "msg:, in stuff" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:4" id:1015; 33 | MainRule "str:#" "msg:mysql comment (#)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:4" id:1016; 34 | 35 | ############################### 36 | ## OBVIOUS RFI IDs:1100-1199 ## 37 | ############################### 38 | MainRule "str:http://" "msg:http:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1100; 39 | MainRule "str:https://" "msg:https:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1101; 40 | MainRule "str:ftp://" "msg:ftp:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1102; 41 | MainRule "str:php://" "msg:php:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1103; 42 | MainRule "str:sftp://" "msg:sftp:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1104; 43 | MainRule "str:zlib://" "msg:zlib:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1105; 44 | MainRule "str:data://" "msg:data:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1106; 45 | MainRule "str:glob://" "msg:glob:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1107; 46 | MainRule "str:phar://" "msg:phar:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1108; 47 | MainRule "str:file://" "msg:file:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1109; 48 | 49 | ####################################### 50 | ## Directory traversal IDs:1200-1299 ## 51 | ####################################### 52 | MainRule "str:.." "msg:double dot" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$TRAVERSAL:4" id:1200; 53 | MainRule "str:/etc/passwd" "msg:obvious probe" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$TRAVERSAL:4" id:1202; 54 | MainRule "str:c:\\" "msg:obvious windows path" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$TRAVERSAL:4" id:1203; 55 | MainRule "str:cmd.exe" "msg:obvious probe" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$TRAVERSAL:4" id:1204; 56 | MainRule "str:\\" "msg:backslash" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$TRAVERSAL:4" id:1205; 57 | #MainRule "str:/" "msg:slash in args" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$TRAVERSAL:2" id:1206; 58 | 59 | ######################################## 60 | ## Cross Site Scripting IDs:1300-1399 ## 61 | ######################################## 62 | MainRule "str:<" "msg:html open tag" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$XSS:8" id:1302; 63 | MainRule "str:>" "msg:html close tag" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$XSS:8" id:1303; 64 | MainRule "str:[" "msg:[, possible js" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$XSS:4" id:1310; 65 | MainRule "str:]" "msg:], possible js" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$XSS:4" id:1311; 66 | MainRule "str:~" "msg:~ character" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$XSS:4" id:1312; 67 | MainRule "str:`" "msg:grave accent !" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$XSS:8" id:1314; 68 | MainRule "rx:%[2|3]." "msg:double encoding !" "mz:ARGS|URL|BODY|$HEADERS_VAR:Cookie" "s:$XSS:8" id:1315; 69 | 70 | #################################### 71 | ## Evading tricks IDs: 1400-1500 ## 72 | #################################### 73 | MainRule "str:&#" "msg: utf7/8 encoding" "mz:ARGS|BODY|URL|$HEADERS_VAR:Cookie" "s:$EVADE:4" id:1400; 74 | MainRule "str:%U" "msg: M$ encoding" "mz:ARGS|BODY|URL|$HEADERS_VAR:Cookie" "s:$EVADE:4" id:1401; 75 | MainRule negative "rx:multipart/form-data|application/x-www-form-urlencoded" "msg:Content is neither mulipart/x-www-form.." "mz:$HEADERS_VAR:Content-type" "s:$EVADE:4" id:1402; 76 | 77 | ############################# 78 | ## File uploads: 1500-1600 ## 79 | ############################# 80 | MainRule "rx:.ph|.asp|.ht" "msg:asp/php file upload!" "mz:FILE_EXT" "s:$UPLOAD:8" id:1500; 81 | -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | # Run as a less privileged user for security reasons. 2 | user www-data; 3 | 4 | # The maximum number of connections for Nginx is calculated by: 5 | # max_clients = worker_processes * worker_connections 6 | # It is better if you set the worker_processes count 1 less than your cpu cores. You have other processes running as well! 7 | worker_processes 1; 8 | 9 | # Maximum open file descriptors per process; 10 | # should be > worker_connections. 11 | worker_rlimit_nofile 50000; 12 | 13 | pid /run/nginx.pid; 14 | 15 | events { 16 | # When you need > 8000 * cpu_cores connections, you start optimizing your OS, 17 | # and this is probably the point at which you hire people who are smarter than 18 | # you, as this is *a lot* of requests. 19 | worker_connections 4096 ; 20 | use epoll; 21 | # accept_mutex off; 22 | 23 | # Accept as many connections as possible. 24 | multi_accept on; 25 | } 26 | 27 | http { 28 | ############################################################################ General Settings 29 | # Define the MIME types for files. 30 | # Usually located at mime.types; 31 | include mime.types; 32 | default_type application/octet-stream; 33 | 34 | # Update charset_types due to updated mime.types 35 | charset_types text/xml text/plain text/vnd.wap.wml application/x-javascript application/rss+xml text/css application/javascript application/json; 36 | 37 | client_max_body_size 20m; 38 | client_body_buffer_size 128k; 39 | large_client_header_buffers 2 1k; 40 | 41 | ## Hide the Nginx version number. 42 | server_tokens off; 43 | 44 | server_names_hash_bucket_size 512; 45 | server_names_hash_max_size 512; 46 | server_name_in_redirect off; 47 | variables_hash_max_size 2048; 48 | variables_hash_bucket_size 64; 49 | 50 | # Speed up file transfers by using sendfile() to copy directly 51 | # between descriptors rather than using read()/write(). 52 | sendfile on; 53 | 54 | # Tell Nginx not to send out partial frames; this increases throughput 55 | # since TCP frames are filled up before being sent out. (adds TCP_CORK) 56 | tcp_nopush on; 57 | 58 | # Tell Nginx to enable the Nagle buffering algorithm for TCP packets, which 59 | # collates several smaller packets together into one larger packet, thus saving 60 | # bandwidth at the cost of a nearly imperceptible increase to latency. (removes TCP_NODELAY) 61 | tcp_nodelay on; 62 | 63 | # Don't put the IP to the end of url when there's a redirection 64 | port_in_redirect off; 65 | 66 | # Let's make a lot of keepalive requests possible 67 | keepalive_requests 100000; 68 | 69 | # How long to allow each connection to stay idle; longer values are better 70 | # for each individual client, particularly for SSL, but means that worker 71 | # connections are tied up longer. (Default: 65) 72 | keepalive_timeout 30; 73 | client_body_timeout 30; 74 | client_header_timeout 60; 75 | send_timeout 30; 76 | 77 | ## Reset lingering timed out connections. Deflect DDoS. 78 | reset_timedout_connection on; 79 | 80 | 81 | ############################################################################ Gzip Settings 82 | # Enable Gzip compressed. 83 | # Pagespeed might not allow us to turn it on 84 | gzip on; 85 | 86 | gzip_buffers 16 8k; 87 | 88 | # This feature allow you to use static GZipped versions of your files (you need to create them yourself) and serve those gzipped files directly through Nginx. Nginx just looks for a filename identical to the one requested by the browsers, but with a “.gz” extension (eg. if 'index.html' is requested, nginx will look for a 'index.html.gz' file next to it). If it exists, Nginx serves this -already compressed- file and does not perform gzip compression, thus reducing CPU overhead and response time. 89 | gzip_static on; 90 | 91 | # Enable compression both for HTTP/1.0 and HTTP/1.1 (required for CloudFront). 92 | gzip_http_version 1.1; 93 | 94 | # Compression level (1-9). 95 | # 5 is a perfect compromise between size and cpu usage, offering about 96 | # 75% reduction for most ascii files (almost identical to level 9). 97 | gzip_comp_level 7; 98 | 99 | # Don't compress anything that's already small and unlikely to shrink much 100 | # if at all (the default is 20 bytes, which is bad as that usually leads to 101 | # larger files after gzipping). 102 | gzip_min_length 1064; 103 | 104 | # Compress data even for clients that are connecting to us via proxies, 105 | # identified by the "Via" header (required for CloudFront). 106 | gzip_proxied expired no-cache no-store private auth; 107 | 108 | # Tell proxies to cache both the gzipped and regular version of a resource 109 | # whenever the clients Accept-Encoding capabilities header varies; 110 | # Avoids the issue where a non-gzip capable client (which is extremely rare 111 | # today) would display gibberish if their proxy gave them the gzipped version. 112 | gzip_vary on; 113 | 114 | # Disable gzip for non-supporting browsers. 115 | gzip_disable "MSIE [1-6]\."; 116 | 117 | # Compress all output labeled with one of the following MIME-types. 118 | gzip_types application/atom+xml 119 | application/javascript 120 | application/json 121 | application/rss+xml 122 | application/vnd.ms-fontobject 123 | application/x-font-ttf 124 | application/x-web-app-manifest+json 125 | application/x-javascript 126 | application/xhtml+xml 127 | application/xml 128 | font/opentype 129 | image/svg+xml 130 | image/x-icon 131 | image/bmp 132 | text/css 133 | text/richtext 134 | text/xsd 135 | text/xsl 136 | text/xml 137 | text/plain 138 | text/x-component 139 | text/javascript; 140 | #text/html is always compressed by HttpGzipModule 141 | 142 | ############################################################################ Caching 143 | # Define a cache path for fastcgi caching under the zone name microcache 144 | fastcgi_cache_path /var/cache/nginx/ levels=1:2 keys_zone=microcache:10m max_size=1000m inactive=60m; 145 | proxy_cache_path /var/cache/nginx/proxy/ levels=1:2 keys_zone=proxy:10m; 146 | 147 | # Improve static content handling by caching metadata, not the files itself 148 | open_file_cache max=1000 inactive=1h; 149 | open_file_cache_valid 2h; 150 | open_file_cache_min_uses 1; 151 | open_file_cache_errors on; 152 | 153 | # Define a zone for limiting the number of simultaneous 154 | # connections nginx accepts. 1m means 32000 simultaneous 155 | # sessions. We need to define for each server the limit_conn 156 | # value refering to this or other zones. 157 | # ** This syntax requires nginx version >= 158 | # ** 1.1.8. Cf. http://nginx.org/en/CHANGES. If using an older 159 | # ** version then use the limit_zone directive below 160 | # ** instead. Comment out this 161 | # ** one if not using nginx version >= 1.1.8. 162 | # limit_conn_zone $binary_remote_addr zone=arbeit:10m; 163 | 164 | # For the filefield_nginx_progress module to work. From the 165 | # README. Reserve 1MB under the name 'uploads' to track uploads. 166 | # upload_progress uploads 1m; 167 | 168 | ############################################################################ Security 169 | # Enable the builtin cross-site scripting (XSS) filter available 170 | # in modern browsers. Usually enabled by default we just 171 | # reinstate in case it has been somehow disabled for this 172 | # particular server instance. 173 | # https://www.owasp.org/index.php/List_of_useful_HTTP_headers. 174 | add_header X-XSS-Protection '1; mode=block'; 175 | 176 | # Enable clickjacking protection in modern browsers. Available in 177 | # IE8 also. See 178 | # https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header 179 | # This may conflicts with pseudo streaming (at least with Nginx version 1.0.12). 180 | # Uncomment the line below if you are not using media streaming. 181 | # For sites being framing on the same domqin uncomment the line below. 182 | #add_header X-Frame-Options SAMEORIGIN; 183 | 184 | # For sites accepting to be framed in any context comment the 185 | # line below. 186 | add_header X-Frame-Options DENY; 187 | 188 | ## Block MIME type sniffing on IE. 189 | add_header X-Content-Options nosniff; 190 | 191 | ############################################################################ Logging 192 | log_format custom '$remote_addr - $remote_user [$time_local] ' 193 | '"$request" $status $body_bytes_sent ' 194 | '"$http_referer" "$http_user_agent" nocache:$no_cache'; 195 | 196 | #log_format varnish_log '$http_x_forwarded_for - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent "$http_referer" ' ; 197 | 198 | #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 199 | # '$status $body_bytes_sent "$http_referer" ' 200 | # '"$http_user_agent" "$http_x_forwarded_for"'; 201 | 202 | access_log /var/log/nginx/access.log; 203 | error_log /var/log/nginx/error.log; 204 | 205 | ############################################################################ Pagespeed 206 | # Edit this file to add your domain. 207 | # https://developers.google.com/speed/pagespeed/module/domains 208 | # include conf.d/pagespeed/pagespeed.conf; 209 | 210 | # Virtual Host Configs 211 | include conf.d/*.conf; 212 | include sites-enabled/*; 213 | 214 | ############################################################################ CLOUDFLARE GET REALIP PROBE 215 | include nomad-conf/realip.add; 216 | } 217 | -------------------------------------------------------------------------------- /nomad-conf/cachestatic.add: -------------------------------------------------------------------------------- 1 | # Aggressive caching for static files 2 | location ~* \.(_:asf|css|js|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|otf|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|t?gz|tif|tiff|ttf|wav|webm|wma|woff|wri|xla|xls|xlsx|xlt|xlw|zip)(\?[0-9]+)?$ { 3 | expires 31536000s; 4 | access_log off; 5 | log_not_found off; 6 | # add_header Vary Accept-Encoding; 7 | add_header Pragma public; 8 | add_header Cache-Control "max-age=31536000, public"; 9 | } 10 | 11 | # Rewrite for versioned CSS+JS via filemtime 12 | location ~* ^.+\.(css|js)(\?[0-9]+)?$ { 13 | rewrite ^(.+)\.(\d+)\.(css|js)$ $1.$3 last; 14 | expires 31536000s; 15 | access_log off; 16 | log_not_found off; 17 | add_header Content-Encoding gzip; 18 | add_header Pragma public; 19 | add_header Cache-Control "max-age=31536000, public"; 20 | } 21 | 22 | # wordpress-w3-total-cache.conf 23 | location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { 24 | expires max; 25 | access_log off; 26 | log_not_found off; 27 | add_header Pragma public; 28 | add_header Cache-Control "max-age=31536000, public"; 29 | break; 30 | } 31 | 32 | location ~ \.(asf|asx|wax|wmx|bmp|class|doc|docx|gif|ico|jpg|jpeg|jpe|mdb|mid|midi|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { 33 | expires 31536000s; 34 | access_log off; 35 | log_not_found off; 36 | add_header Content-Encoding gzip; 37 | add_header Pragma public; 38 | add_header Cache-Control "max-age=31536000, public"; 39 | } 40 | ############################################################################ CACHE STATIC 41 | -------------------------------------------------------------------------------- /nomad-conf/deny-htaccess.add: -------------------------------------------------------------------------------- 1 | # deny access to .htaccess files, if Apache's document root 2 | # concurs with nginx's one 3 | # 4 | location ~ /\.ht { 5 | deny all; 6 | } 7 | -------------------------------------------------------------------------------- /nomad-conf/donotlog.add: -------------------------------------------------------------------------------- 1 | # remove the robots line if you want to use wordpress' virtual robots.txt 2 | location = /robots.txt { access_log off; log_not_found off; } 3 | location = /favicon.ico { access_log off; log_not_found off; } 4 | # this prevents hidden files (beginning with a period) from being served 5 | location ~ /\. { access_log off; log_not_found off; deny all; } 6 | # this prevents file leftovers to be seen, such as vim temp files. 7 | location ~ ~$ { access_log off; log_not_found off; deny all; } 8 | -------------------------------------------------------------------------------- /nomad-conf/fastcgi.add: -------------------------------------------------------------------------------- 1 | set $cache_uri $request_uri; 2 | if ($request_method = POST) { 3 | set $cache_uri 'null cache'; 4 | } 5 | 6 | if ($query_string != "") { 7 | set $cache_uri 'null cache'; 8 | } 9 | 10 | # Don't use the cache for logged in users or recent commenters 11 | if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") { 12 | set $cache_uri 'null cache'; 13 | } 14 | 15 | # Don't cache uris containing the following segments 16 | if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { 17 | set $cache_uri 'null cache'; 18 | } 19 | 20 | ## Forward paths like /js/index.php/x.js to relevant handler 21 | location ~ \.php/ { 22 | rewrite ^(.*\.php)/ $1 last; 23 | } 24 | 25 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 26 | # location ~ \.php(.*)$ { 27 | location ~ \.php$ { 28 | set $no_cache ""; 29 | # If non GET/HEAD, don't cache and mark user as uncacheable for 1 second via cookie 30 | if ($request_method !~ ^(GET|HEAD)$) { 31 | set $no_cache "1"; 32 | } 33 | 34 | # Drop no cache cookie if need be 35 | # (for some reason, add_header fails if included in prior if-block) 36 | if ($no_cache = "1") { 37 | add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; 38 | add_header X-Microcachable "0"; 39 | } 40 | # Bypass cache if no-cache cookie is set 41 | if ($http_cookie ~* "_mcnc") { 42 | set $no_cache "1"; 43 | } 44 | # Bypass cache if flag is set 45 | fastcgi_no_cache $no_cache; 46 | fastcgi_cache_bypass $no_cache; 47 | fastcgi_cache_bypass $http_pragma; 48 | fastcgi_cache microcache; 49 | fastcgi_cache_key $scheme$host$request_uri$request_method; 50 | fastcgi_cache_valid 404 30m; 51 | fastcgi_cache_valid 200 301 302 20s; 52 | fastcgi_cache_use_stale error timeout invalid_header http_500; 53 | fastcgi_cache_use_stale updating; 54 | fastcgi_pass_header Set-Cookie; 55 | fastcgi_pass_header Cookie; 56 | fastcgi_ignore_headers Cache-Control Expires Set-Cookie; 57 | 58 | if ($cache_uri != "null cache") { 59 | add_header X-Cache_Debug "$cache_uri $cookie_nocache $arg_nocache$arg_comment $http_pragma $http_authorization"; 60 | add_header X-Cache $upstream_cache_status; 61 | set $no_cache 0; 62 | } 63 | 64 | fastcgi_max_temp_file_size 10M; 65 | fastcgi_pass 127.0.0.1:9000; 66 | # fastcgi_pass unix:/var/run/php5-fpm.sock; 67 | fastcgi_index index.php; 68 | # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 69 | # fastcgi_param SCRIPT_FILENAME $request_filename; 70 | 71 | # Save the $fastcgi_path_info before try_files clear it 72 | set $mypath $fastcgi_path_info; 73 | fastcgi_param PATH_INFO $mypath; 74 | try_files $fastcgi_script_name =404; 75 | fastcgi_split_path_info ^(.+?\.php)(/.*)$; 76 | if (!-f $document_root$fastcgi_script_name) { 77 | return 404; 78 | } 79 | # The below should be disabled if cgi.fix_pathinfo is set to 0 at /etc/php5/fpm/php.ini 80 | # fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 81 | fastcgi_intercept_errors off; 82 | include fastcgi_params; 83 | fastcgi_param QUERY_STRING $query_string; 84 | fastcgi_param REQUEST_METHOD $request_method; 85 | fastcgi_param CONTENT_TYPE $content_type; 86 | fastcgi_param CONTENT_LENGTH $content_length; 87 | fastcgi_ignore_client_abort off; 88 | fastcgi_connect_timeout 60; 89 | fastcgi_send_timeout 180; 90 | fastcgi_read_timeout 180; 91 | fastcgi_buffers 4 256k; 92 | fastcgi_buffer_size 128k; 93 | fastcgi_busy_buffers_size 256k; 94 | fastcgi_temp_file_write_size 256k; 95 | 96 | # If you're using a Nginx version greater or equal to 1.1.4 then 97 | # you can use keep alive connections to the upstream be it 98 | # FastCGI or Apache. If that's not the case comment out the line below. 99 | fastcgi_keep_conn on; # keep alive to the FCGI upstream 100 | } 101 | ###################################### FASTCGI END 102 | -------------------------------------------------------------------------------- /nomad-conf/pagespeed-all-settings.add: -------------------------------------------------------------------------------- 1 | ############################################################################ PAGESPEED START 2 | # Enables Pagespeed 3 | pagespeed on; 4 | 5 | # pagespeed UsePerVHostStatistics on; 6 | pagespeed InPlaceResourceOptimization off; 7 | pagespeed Statistics off; 8 | pagespeed StatisticsLogging off; 9 | pagespeed LogDir /var/log/pagespeed; 10 | pagespeed StatisticsLoggingIntervalMs 60000; 11 | pagespeed StatisticsLoggingMaxFileSizeKb 1024; 12 | 13 | # Ensure requests for pagespeed optimized resources go to the pagespeed handler 14 | # and no extraneous headers get set. 15 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { 16 | add_header "" ""; 17 | } 18 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } 19 | location ~ "^/ngx_pagespeed_static/" { } 20 | location ~ "^/ngx_pagespeed_beacon$" { } 21 | location /ngx_pagespeed_statistics { allow 127.0.0.1; allow 213.74.60.33; deny all; } 22 | location /ngx_pagespeed_global_statistics { allow 127.0.0.1; allow 213.74.60.33; deny all; } 23 | location /ngx_pagespeed_message { allow 127.0.0.1; allow 213.74.60.33; deny all; } 24 | location /pagespeed_console { allow 127.0.0.1; allow 213.74.60.33; deny all; } 25 | 26 | # Enbables the modules necessary to run pagespeed 27 | pagespeed RewriteLevel CoreFilters; 28 | # pagespeed EnableFilters recompress_images,resize_images,rewrite_images,inline_images,dedup_inlined_images; 29 | # pagespeed EnableFilters recompress_webp,convert_gif_to_png,convert_png_to_jpeg,convert_jpeg_to_progressive,recompress_png,recompress_jpeg,strip_image_color_profile,strip_image_meta_data,jpeg_subsampling; 30 | # pagespeed EnableFilters insert_image_dimensions,combine_css,rewrite_css,fallback_rewrite_css_urls,combine_javascript; 31 | # pagespeed EnableFilters collapse_whitespace,remove_comments,remove_quotes,rewrite_style_attributes_with_url; 32 | # pagespeed EnableFilters extend_cache,combine_heads,move_css_above_scripts,move_css_to_head; 33 | # pagespeed EnableFilters make_google_analytics_async,inline_google_font_css; 34 | pagespeed EnableFilters rewrite_javascript,lazyload_images,insert_dns_prefetch; 35 | pagespeed ImagePreserveURLs on; 36 | pagespeed LazyloadImagesAfterOnload on; 37 | pagespeed LazyloadImagesBlankUrl "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; 38 | pagespeed ImageRecompressionQuality 80; 39 | #pagespeed ImageResolutionLimitBytes 32000000; 40 | pagespeed JpegRecompressionQuality -1; 41 | pagespeed PreserveUrlRelativity on; 42 | # Enabling JsPreserveURLs will forbid the use of the following filters: canonicalize_javascript_libraries, combine_javascript, defer_javascript, extend_cache_javascript, inline_javascript, and outline_javascript. 43 | pagespeed JsPreserveURLs On; 44 | # Enabling ImagePreserveURLs will forbid the use of the following filters: inline_preview_images, lazyload_images, extend_cache_images, inline_images, and sprite_images. 45 | pagespeed ImagePreserveURLs On; 46 | # Enabling CssPreserveURLs will forbid the use of the following filters: combine_css, extend_cache_css, inline_css, inline_import_to_link, and outline_css. 47 | pagespeed CssPreserveURLs On; 48 | pagespeed CriticalImagesBeaconEnabled false; 49 | pagespeed CombineAcrossPaths off; 50 | # In some sites, the URL path layout or network deployment strategy may not allow for consistent configuration between HTML and images. PageSpeed offers a workaround for such sites by encoding relevant configuration settings for each rewritten resource into the URLs: 51 | pagespeed AddOptionsToUrls off; 52 | 53 | pagespeed DownstreamCachePurgeLocationPrefix http://127.0.0.1:80/; 54 | pagespeed DownstreamCachePurgeMethod PURGE; 55 | pagespeed DownstreamCacheRewrittenPercentageThreshold 95; 56 | 57 | pagespeed ForceCaching on; 58 | 59 | #By default, PageSpeed serves all HTML with Cache-Control: no-cache, max-age=0 because the transformations made to the page may not be cacheable for extended periods of time. 60 | #If you want to force PageSpeed to leave the original HTML caching headers you can add: 61 | pagespeed ModifyCachingHeaders on; 62 | 63 | # let's speed up PageSpeed by storing it in the super duper fast memcached 64 | pagespeed MemcachedThreads 1; 65 | pagespeed MemcachedServers "localhost:11211"; 66 | # Respect Vary Headers. Uncomment to enable 67 | pagespeed RespectVary on; 68 | # Create a mapping from https://www.example.com -> http://localhost 69 | # This allows pagespeed to generate files on a non https domain, and for our https domain to serve them 70 | # pagespeed MapOriginDomain "http://localhost" "https://www.example.com"; 71 | # Declare where pagespeed resources should be stored. I like /tmp, but you may prefer something 72 | # that can survive a reboot of your server. 73 | #pagespeed FileCachePath /tmp; 74 | 75 | #Biraz da gulelim 76 | pagespeed XHeaderValue "Powered by Sucuk Ekmek"; 77 | ############################################################################ PAGESPEED END 78 | -------------------------------------------------------------------------------- /nomad-conf/pagespeed.add: -------------------------------------------------------------------------------- 1 | # Turning the module on and off 2 | pagespeed on; 3 | 4 | 5 | # pagespeed UsePerVHostStatistics on; 6 | pagespeed InPlaceResourceOptimization on; 7 | pagespeed Statistics off; 8 | pagespeed StatisticsLogging off; 9 | pagespeed RateLimitBackgroundFetches off; 10 | pagespeed LogDir /var/log/pagespeed; 11 | pagespeed StatisticsLoggingIntervalMs 60000; 12 | pagespeed StatisticsLoggingMaxFileSizeKb 1024; 13 | 14 | # Configuring PageSpeed Filters 15 | # PassThrough just let them go unfiltered, CoreFilters enables the basic, safe filters 16 | pagespeed RewriteLevel CoreFilters; 17 | 18 | # Needs to exist and be writable by nginx. Use tmpfs for best performance. 19 | pagespeed MemcachedServers "127.0.0.1:11211"; 20 | pagespeed FileCachePath /var/ngx_pagespeed_cache; 21 | pagespeed FileCacheSizeKb 409600; 22 | pagespeed FileCacheCleanIntervalMs 3600000; 23 | pagespeed FileCacheInodeLimit 500000; 24 | pagespeed LRUCacheKbPerProcess 8192; 25 | pagespeed LRUCacheByteLimit 16384; 26 | 27 | # Ensure requests for pagespeed optimized resources go to the pagespeed handler 28 | # and no extraneous headers get set. 29 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { 30 | add_header "" ""; 31 | } 32 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } 33 | location ~ "^/ngx_pagespeed_static/" { } 34 | location ~ "^/ngx_pagespeed_beacon$" { } 35 | location /ngx_pagespeed_statistics { allow 127.0.0.1; allow 213.74.60.33; deny all; } 36 | location /ngx_pagespeed_global_statistics { allow 127.0.0.1; allow 213.74.60.33; deny all; } 37 | location /ngx_pagespeed_message { allow 127.0.0.1; allow 213.74.60.33; deny all; } 38 | location /pagespeed_console { allow 127.0.0.1; allow 213.74.60.33; deny all; } 39 | # PageSpeed Admin 40 | pagespeed StatisticsPath /ngx_pagespeed_statistics; 41 | #pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics; 42 | pagespeed MessagesPath /ngx_pagespeed_message; 43 | pagespeed ConsolePath /pagespeed_console; 44 | pagespeed AdminPath /pagespeed_admin; 45 | #pagespeed GlobalAdminPath /pagespeed_global_admin; 46 | 47 | # PageSpeed Cache Purge 48 | pagespeed EnableCachePurge on; 49 | pagespeed PurgeMethod PURGE; 50 | 51 | pagespeed LazyloadImagesAfterOnload on; 52 | pagespeed LazyloadImagesBlankUrl "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; 53 | 54 | pagespeed Statistics off; 55 | pagespeed StatisticsLogging off; 56 | 57 | # Ensure requests for pagespeed optimized resources go to the pagespeed handler 58 | # and no extraneous headers get set. 59 | location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { 60 | add_header "" ""; 61 | } 62 | 63 | pagespeed DownstreamCachePurgeLocationPrefix http://127.0.0.1:80/; 64 | pagespeed DownstreamCachePurgeMethod PURGE; 65 | pagespeed DownstreamCacheRewrittenPercentageThreshold 95; 66 | 67 | # let's speed up PageSpeed by storing it in the super duper fast memcached 68 | pagespeed MemcachedThreads 1; 69 | pagespeed MemcachedServers "localhost:11211"; 70 | pagespeed MemcachedTimeoutUs 100000; 71 | # Respect Vary Headers. Uncomment to enable 72 | pagespeed RespectVary on; 73 | -------------------------------------------------------------------------------- /nomad-conf/probe.add: -------------------------------------------------------------------------------- 1 | # Do not log Varnish probe for health check 2 | # A probe.htm is required at the root 3 | location /probe.htm { 4 | allow all; 5 | log_not_found off; 6 | access_log off; 7 | } 8 | -------------------------------------------------------------------------------- /nomad-conf/proxy-pass.add: -------------------------------------------------------------------------------- 1 | proxy_cache proxy; 2 | location / { 3 | # Pass a bunch of headers to the downstream server, so they'll know what's going on. 4 | proxy_set_header Host $host; 5 | proxy_set_header X-Real-IP $remote_addr; 6 | proxy_set_header Referer $http_referer; 7 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 8 | proxy_set_header X-Forwarded-Proto $scheme; 9 | proxy_http_version 1.1; 10 | proxy_intercept_errors on; 11 | proxy_redirect default; 12 | ## Proxy caching 13 | proxy_buffering on; 14 | proxy_buffer_size 1k; 15 | proxy_buffers 24 4k; 16 | proxy_busy_buffers_size 8k; 17 | proxy_max_temp_file_size 2048m; 18 | proxy_temp_file_write_size 32k; 19 | 20 | 21 | proxy_pass http://127.0.0.1:8080; 22 | } 23 | -------------------------------------------------------------------------------- /nomad-conf/realip.add: -------------------------------------------------------------------------------- 1 | # Get the real IP from Varnish, that bastard! 2 | # set_real_ip_from 0.0.0.0/32; # all addresses get a real IP. 3 | set_real_ip_from 204.93.240.0/24; 4 | set_real_ip_from 204.93.177.0/24; 5 | set_real_ip_from 199.27.128.0/21; 6 | set_real_ip_from 173.245.48.0/20; 7 | set_real_ip_from 103.21.244.0/22; 8 | set_real_ip_from 103.22.200.0/22; 9 | set_real_ip_from 103.31.4.0/22; 10 | set_real_ip_from 141.101.64.0/18; 11 | set_real_ip_from 108.162.192.0/18; 12 | set_real_ip_from 190.93.240.0/20; 13 | set_real_ip_from 188.114.96.0/20; 14 | set_real_ip_from 197.234.240.0/22; 15 | set_real_ip_from 198.41.128.0/17; 16 | set_real_ip_from 2400:cb00::/32; 17 | set_real_ip_from 2606:4700::/32; 18 | set_real_ip_from 2803:f800::/32; 19 | set_real_ip_from 2405:b500::/32; 20 | set_real_ip_from 2405:8100::/32; 21 | set_real_ip_from 127.0.0.1; 22 | #real_ip_header CF-Connecting-IP; 23 | real_ip_header X-Forwarded-For; 24 | -------------------------------------------------------------------------------- /nomad-conf/serverror.add: -------------------------------------------------------------------------------- 1 | # 2 | # error_page 500 502 503 504 /50x.html; 3 | # location = /50x.html { 4 | # root /var/www; 5 | # } 6 | 7 | #error_page 404 /404.html; 8 | -------------------------------------------------------------------------------- /nomad-conf/status-stub.add: -------------------------------------------------------------------------------- 1 | location /nginx-status { 2 | stub_status on; 3 | access_log off; 4 | allow 127.0.0.1; 5 | allow 5.2.65.220; 6 | deny all; 7 | } 8 | -------------------------------------------------------------------------------- /nomad-conf/wordpress.add: -------------------------------------------------------------------------------- 1 | ############################################################################ WORDPRESS START 2 | # Common deny or internal locations, to help prevent access to not-public areas 3 | location ~* wp-admin/includes { deny all; } 4 | location ~* wp-includes/theme-compat/ { deny all; } 5 | location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; } 6 | location /wp-content/ { internal; } 7 | location /wp-includes/ { internal; } 8 | location ~ /(\.|wp-config.php|readme.html|license.txt) { deny all; } 9 | 10 | # Add trailing slash to */wp-admin requests. 11 | # rewrite /wp-admin$ $scheme://$host$uri/ permanent; 12 | 13 | # Prevent any potentially-executable files in the uploads directory from being executed 14 | # by forcing their MIME type to text/plain 15 | location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php|js|swf)$ { 16 | types { } 17 | default_type text/plain; 18 | } 19 | 20 | location ~* ^/wp-includes/uploads/.*.(html|htm|shtml|php|js|swf)$ { 21 | types { } 22 | default_type text/plain; 23 | } 24 | 25 | location ~* ^/wp-content/cache/page_enhanced.*html$ { 26 | expires max; 27 | charset utf-8; 28 | add_header Vary "Accept-Encoding, Cookie"; 29 | add_header Pragma public; 30 | add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 31 | } 32 | 33 | location ~* ^/wp-content/cache/page_enhanced.*gzip$ { 34 | expires max; 35 | gzip off; 36 | types {} 37 | charset utf-8; 38 | default_type text/html; 39 | add_header Vary "Accept-Encoding, Cookie"; 40 | add_header Content-Encoding gzip; 41 | add_header Pragma public; 42 | add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 43 | } 44 | ############################################################################ WORDPRESS END 45 | -------------------------------------------------------------------------------- /proxy_params: -------------------------------------------------------------------------------- 1 | proxy_set_header Host $http_host; 2 | proxy_set_header X-Real-IP $remote_addr; 3 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 4 | proxy_set_header X-Forwarded-Proto $scheme; 5 | -------------------------------------------------------------------------------- /scripts/update-pagespeed-libraries.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Converts pagespeed_libraries.conf from Apache-format to Nginx-format, 4 | # supporting the canonicalize_javascript_libraries filter. 5 | # Inspired by https://github.com/pagespeed/ngx_pagespeed/issues/532 6 | # 7 | # Usage: 8 | # scripts/pagespeed_libraries_generator.sh > pagespeed_libraries.conf 9 | # 10 | # Then have nginx include that configuration file and enable the filter 11 | # canonicalize_javascript_libraries. 12 | # 13 | # Author: vid@zippykid.com (Vid Luther) 14 | # jefftk@google.com (Jeff Kaufman) 15 | 16 | URL="https://modpagespeed.googlecode.com/svn/trunk/src/" 17 | URL+="net/instaweb/genfiles/conf/pagespeed_libraries.conf" 18 | curl -s "$URL" \ 19 | | grep ModPagespeedLibrary \ 20 | | while read library size hash url ; do 21 | echo " pagespeed Library $size $hash $url;" 22 | done > /etc/nginx/conf.d/pagespeed/pagespeed_libraries.conf 23 | -------------------------------------------------------------------------------- /sites-enabled/example-ssl.com: -------------------------------------------------------------------------------- 1 | #Let's redirect http and www requests to non-www site. 2 | server { 3 | # don't forget to tell on which port this server listens 4 | listen 80; 5 | listen [::]:80 ipv6only=on; 6 | 7 | # listen on the www host 8 | server_name example.com www.example.com; # do no forget to replace example.com 9 | 10 | # and redirect to the https host (declared below) 11 | return 301 https://example.com$request_uri; # do no forget to replace example.com 12 | } 13 | 14 | #Let's redirect www https requests to non-www site. 15 | server { 16 | # don't forget to tell on which port this server listens 17 | listen 443 ssl spdy deferred; #SPDY Requires nginx 1.6+ 18 | listen [::]:443 ssl spdy deferred ipv6only=on; 19 | 20 | # listen on the www host 21 | server_name www.example.com; 22 | 23 | # and redirect to the https host (declared below) 24 | # do no forget to replace example.com 25 | return 301 https://example.com$request_uri; 26 | } 27 | 28 | ######################################## 29 | 30 | server { 31 | listen 443 ssl spdy deferred; #SPDY Requires nginx 1.6+ 32 | listen [::]:443 ssl spdy deferred ipv6only=on; 33 | 34 | # Enable below with your certificates 35 | ssl on; 36 | ssl_certificate_key /etc/ssl/cert/example.com.key; # Replace this with your certificate key 37 | ssl_certificate /etc/ssl/cert/example.com.bundle.crt # Replace it with your ca-bundle.pem; 38 | 39 | # ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; 40 | # Backward compatible ciphers 41 | ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; 42 | ssl_prefer_server_ciphers on; 43 | 44 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 45 | ssl_session_cache shared:SSL:50m; 46 | ssl_session_timeout 20m; 47 | keepalive_timeout 70; 48 | 49 | # Buffer size of 1400 bytes fits in one MTU. 50 | # nginx 1.5.9+ ONLY 51 | ssl_buffer_size 1400; 52 | 53 | ssl_stapling on; # Requires nginx >= 1.3.7 54 | ssl_stapling_verify on; # Requires nginx => 1.3.7 55 | resolver 8.8.4.4 8.8.8.8 valid=300s; 56 | resolver_timeout 10s; 57 | # ssl_stapling_file /etc/ssl/domain.bundle.pem.ocsp; 58 | 59 | # For Diffie Hellman Key Exchange: 60 | ssl_dhparam /var/www/vhosts/cloud.golgeli.net/ssl/dhparam.pem; 61 | # cd /var/www/vhosts/cloud.golgeli.net/ssl/ 62 | # openssl dhparam -out dhparam.pem 4096 63 | 64 | # let the browsers know that we only accept HTTPS 65 | # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) 66 | add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; 67 | add_header X-Frame-Options DENY; 68 | add_header X-Content-Type-Options nosniff; 69 | 70 | # SPDY header compression (0 for none, 9 for slow/heavy compression). Preferred is 6. 71 | # BUT: header compression is flawed and vulnerable in SPDY versions 1 - 3. 72 | # Disable with 0, until using a version of nginx with SPDY 4. 73 | spdy_headers_comp 1; 74 | 75 | ### 76 | ### 77 | ### Below here is the same with non-ssl server settings.. 78 | ### 79 | ### 80 | 81 | # our primary server name is the first, aliases simply come after it. you can also include wildcards like *.example.com 82 | server_name example.com; 83 | 84 | # Path for the website 85 | root /var/www/; 86 | 87 | access_log logs/host.access.log main; 88 | error_log logs/host.error.log main; 89 | 90 | # Enable gunzip if you have gunzip module compiled with nginx. 91 | # http://nginx.com/resources/admin-guide/compression-and-decompression/ 92 | # gunzip on; 93 | 94 | index index.php index.html index.htm; 95 | 96 | server_name_in_redirect off; 97 | 98 | # Remove auto listing of directories. 99 | autoindex off; 100 | 101 | # You can enable this for prettier directory listings if you enable autoindex. fancyindex module must be compiled with nginx. 102 | # fancyindex off; 103 | 104 | # Set default charset as unicode. 105 | charset utf-8; 106 | 107 | ############################################### 108 | location / { 109 | # the magic. this is the equivalent of all those lines you use for mod_rewrite in Apache 110 | # if the request is for "/foo", we'll first try it as a file. then as a directory. and finally 111 | # we'll assume its some sort of "clean" url and hand it to index.php so our CMS can work with it 112 | try_files $uri $uri/ /index.php$is_args$args; 113 | 114 | #Some software doesn't even need the query string, and can read from REQUEST_URI (WordPress supports this, for example) 115 | # http://docs.ngx.cc/en/latest/topics/tutorials/config_pitfalls.html 116 | #try_files $uri $uri/ /index.php?q=$uri&$args; 117 | } 118 | ############################################### 119 | 120 | # Let's Include Cache settings 121 | include nomad-conf/cachestatic.add; 122 | 123 | # Wordpress settings for /wordpress folder 124 | include nomad-conf/wordpress.add; 125 | 126 | # Include the basic h5bp config set 127 | include h5bp/basic.conf; 128 | 129 | # Let's Include PageSpeed 130 | # include nomad-conf/pagespeed.add; 131 | 132 | # PHP Settings 133 | include nomad-conf/fastcgi.add; 134 | 135 | # Get real IP from Varnish and Cloudflare for Logging 136 | include nomad-conf/realip.add; 137 | 138 | # Redirect server error pages to the static page /50x.html 139 | include nomad-conf/serverror.add; 140 | 141 | # Deny access to htaccess files 142 | include nomad-conf/deny-htaccess.add; 143 | 144 | # Varnish probe 145 | include nomad-conf/probe.add; 146 | 147 | # Let us not log favicon and robots and whatever 148 | include nomad-conf/donotlog.add; 149 | 150 | # Create an /nginx-status page. 151 | include nomad-conf/status-stub.add; 152 | } 153 | -------------------------------------------------------------------------------- /sites-enabled/example.com: -------------------------------------------------------------------------------- 1 | #Let's redirect www requests to non-www site. 2 | server { 3 | # don't forget to tell on which port this server listens 4 | listen 80; 5 | listen [::]:80 ipv6only=on; 6 | 7 | # listen on the www host 8 | server_name www.example.com; 9 | 10 | # Preserve the port when redirects. 11 | port_in_redirect off; 12 | 13 | # The below config will redirect ALL subdomains to non-www site. 14 | # If you don't have any other subdomains, you may enable this instead of the above one. 15 | # server_name *.example.com; 16 | 17 | # and redirect to the non-www host (declared below) 18 | # do no forget to replace example.com 19 | return 301 $scheme://example.com$request_uri; 20 | } 21 | 22 | server { 23 | listen 80 ; 24 | listen [::]:80 ipv6only=on; 25 | # listen 80 deferred; # for Linux, might improve performance by reducing some formalities. 26 | # listen 80 accept_filter=httpready; # for FreeBSD 27 | # listen [::]:80 ipv6only=on; # For only IPv6 28 | 29 | # our primary server name is the first, aliases simply come after it. you can also include wildcards like *.example.com 30 | server_name example.com; 31 | 32 | # Path for the website 33 | root /var/www/; 34 | 35 | access_log logs/host.access.log main; 36 | error_log logs/host.error.log main; 37 | 38 | # Enable gunzip if you have gunzip module compiled with nginx. 39 | # http://nginx.com/resources/admin-guide/compression-and-decompression/ 40 | # gunzip on; 41 | 42 | index index.php index.html index.htm; 43 | 44 | server_name_in_redirect off; 45 | 46 | # Remove auto listing of directories. 47 | autoindex off; 48 | 49 | # You can enable this for prettier directory listings if you enable autoindex. fancyindex module must be compiled with nginx. 50 | # fancyindex off; 51 | 52 | # Set default charset as unicode. 53 | charset utf-8; 54 | 55 | ############################################### 56 | location / { 57 | # the magic. this is the equivalent of all those lines you use for mod_rewrite in Apache 58 | # if the request is for "/foo", we'll first try it as a file. then as a directory. and finally 59 | # we'll assume its some sort of "clean" url and hand it to index.php so our CMS can work with it 60 | try_files $uri $uri/ /index.php$is_args$args; 61 | 62 | #Some software doesn't even need the query string, and can read from REQUEST_URI (WordPress supports this, for example) 63 | # http://docs.ngx.cc/en/latest/topics/tutorials/config_pitfalls.html 64 | #try_files $uri $uri/ /index.php?q=$uri&$args; 65 | } 66 | ############################################### 67 | 68 | # Let's Include Cache settings 69 | include nomad-conf/cachestatic.add; 70 | 71 | # Wordpress settings for /wordpress folder 72 | include nomad-conf/wordpress.add; 73 | 74 | # Include the basic h5bp config set 75 | include h5bp/basic.conf; 76 | 77 | # Let's Include PageSpeed 78 | # include nomad-conf/pagespeed.add; 79 | 80 | # PHP Settings 81 | include nomad-conf/fastcgi.add; 82 | 83 | # Get real IP from Varnish and Cloudflare for Logging 84 | include nomad-conf/realip.add; 85 | 86 | # Redirect server error pages to the static page /50x.html 87 | include nomad-conf/serverror.add; 88 | 89 | # Deny access to htaccess files 90 | include nomad-conf/deny-htaccess.add; 91 | 92 | # Varnish probe 93 | include nomad-conf/probe.add; 94 | 95 | # Let us not log favicon and robots and whatever 96 | include nomad-conf/donotlog.add; 97 | 98 | # Create an /nginx-status page. 99 | include nomad-conf/status-stub.add; 100 | } 101 | -------------------------------------------------------------------------------- /sites-enabled/undefined-sites.conf: -------------------------------------------------------------------------------- 1 | # Server definition to handle requests to undefined hosts 2 | # Don't change this file, unless you know what you are doing 3 | # This files sends an empty reply to the requests. 4 | server 5 | { 6 | root ""; 7 | server_name ""; 8 | access_log off; 9 | log_not_found off; 10 | listen 80 default_server; 11 | listen [::]:80 default_server; 12 | return 444; 13 | } 14 | -------------------------------------------------------------------------------- /uwsgi_params: -------------------------------------------------------------------------------- 1 | uwsgi_param QUERY_STRING $query_string; 2 | uwsgi_param REQUEST_METHOD $request_method; 3 | uwsgi_param CONTENT_TYPE $content_type; 4 | uwsgi_param CONTENT_LENGTH $content_length; 5 | 6 | uwsgi_param REQUEST_URI $request_uri; 7 | uwsgi_param PATH_INFO $document_uri; 8 | uwsgi_param DOCUMENT_ROOT $document_root; 9 | uwsgi_param SERVER_PROTOCOL $server_protocol; 10 | uwsgi_param UWSGI_SCHEME $scheme; 11 | # Addition by nomad 12 | uwsgi_param HTTPS $https if_not_empty; 13 | 14 | uwsgi_param REMOTE_ADDR $remote_addr; 15 | uwsgi_param REMOTE_PORT $remote_port; 16 | uwsgi_param SERVER_PORT $server_port; 17 | uwsgi_param SERVER_NAME $server_name; 18 | --------------------------------------------------------------------------------