Skip to content

Commit 0e34169

Browse files
committed
doc: mention Fastly as current CDN provider and document config
Ref #30
1 parent d1c4adb commit 0e34169

File tree

2 files changed

+29
-39
lines changed

2 files changed

+29
-39
lines changed

doc/cdn.md

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ Legacy services:
1515

1616
## Service: code.jquery.com
1717

18-
As of January 2023, jQuery CDN transfers 2.2 petabytes a month in bandwidth. jQuery CDN is currently powered by StackPath ([§ History](#history)).
18+
As of January 2023, jQuery CDN transfers 2.2 petabytes a month in bandwidth. jQuery CDN is currently powered by Fastly ([§ History](#history)).
1919

20-
StackPath is configured to consider content at any URL to be immutable. New content is pulled by the CDN from our origin server.
20+
Fastly is configured to treat content as immutable (cached unconditionally for up to 1 year). New content is pulled by the CDN from an origin server.
2121

2222
The origin servers (hosted at DigitalOcean) are managed by Puppet, running Debian Linux with an Nginx web server to serve static files. Files are served from a checkout of the [codeorigin Git repository](https://github.com/jquery/codeorigin.jquery.com).
2323

@@ -29,7 +29,7 @@ The following are examples of mitigations and optimizations:
2929

3030
* Consumers: Promote use of SRI integrity attributes on `<script>` tags.
3131
* CDN: 2FA for control panel accounts.
32-
* CDN: Gzip compression and 1-year unconditional browser caching.
32+
* CDN: Gzip compression, 1-year unconditional browser caching, 7-day stale-while-revalidate.
3333
* CDN: Pull from origin using an encrypted connection (including for plain HTTP requests).
3434
* CDN: Enable strict SNI verification on the HTTPS/TLS connection to the origin.
3535
* Origin: Debian Linux LTS with debian-security, unattended-upgrades, and basic firewalls.
@@ -48,46 +48,34 @@ You can run [an automated test suite](https://github.com/jquery/codeorigin.jquer
4848

4949
For uptime monitoring, refer to [monitoring.md](./monitoring.md).
5050

51-
### Highwinds configuration
52-
53-
In StrikeTracker (StackPath Highwinds' control panel), the "code" site has the following notable configuration settings:
54-
55-
* SSL support: Enabled.
56-
* IPv6 support: Enabled.
57-
* HTTPS/2 support: Enabled.
58-
* Delivery:
59-
* Gzip compression: Enabled.
60-
* Gzip level: 6 (highest).
61-
* Cache overrides:
62-
* Browser TTL: 1 year (max-age=31536000)
63-
* CDN TTL: 1 year (max-age=31536000)
64-
* Stale Cache Extension: 1 day (86400 seconds)
65-
* Case Insensitive Cache: Enabled.
66-
* Origin:
67-
* No Query String Parameters: Enabled.
68-
* Origin protocol: Always HTTPS.
69-
* Compressed Origin Pull: Enabled (accept Gzip responses).
70-
* Reporting:
71-
* Raw Logs: **Disabled**.
72-
* Access Log: **Disabled**.
73-
* Origin Log: **Disabled**.
74-
75-
See also:
76-
77-
* [StrikeTracker Help - Origins](https://support.highwinds.com/hc/en-us/articles/360029757491-Origins)
78-
* [StrikeTracker Help - Origin Settings](https://support.highwinds.com/hc/en-us/articles/11299302193563-Origin-Settings)
51+
### Fastly configuration
52+
53+
The "code" service has the following notable configuration settings (last updated Oct 2023). See also [issue #30](https://github.com/jquery/infrastructure-puppet/issues/30).
54+
55+
* Origins:
56+
* Always TLS to origin.
57+
* Verify cert.
58+
* Enable SNI hostname.
59+
* Headers
60+
* [Ignore query strings: req.url = req.url.path](https://docs.fastly.com/en/guides/making-query-strings-agnostic)
61+
* [Case-insensitive req.url](https://developer.fastly.com/reference/vcl/functions/strings/std-tolower/)
62+
* DNS entrypoint:
63+
* Dualstack IPv4 & IPv6.
64+
* TLS 1.2+
65+
* TLS ciphers include CBC (for Windows 7, Windows 8, and IE9-11 compat).
66+
* HTTP/2
67+
* HTTPS & plain HTTP
7968

8069
## Service: release.jquery.com
8170

82-
This is a WordPress-based documentation site (see TODO), similar to https://jquery.com and https://api.jquery.com.
71+
This is a WordPress-based documentation site (see [wordpress.md](./wordpress.md)), similar to https://jquery.com and https://api.jquery.com and served from the same set of WordPress origin servers.
8372

8473
Notable differences:
8574

86-
* support access over IPv6
87-
* support access over plain HTTP (no redirect)
88-
* no traffic rejection of any kind (e.g. DDOS/WAF or other security rules)
89-
* served by jQuery CDN (unlike other doc sites, which use Cloudflare)
90-
* proxy `/git/` directory to serve unreleased alpha versions, built by Jenkins
75+
* fronted by same CDN provider as the jQuery CDN (unlike our other doc sites, which use Cloudflare).
76+
* support access over IPv6.
77+
* support access over plain HTTP (no redirect).
78+
* little to no traffic filtering (e.g. DDOS/WAF or other security rules, no captchas, interstitials, or other client-side interventions).
9179

9280
## Service: content.jquery.com
9381

@@ -107,9 +95,11 @@ In 2018, jQuery CDN internally [transitioned from MaxCDN to Highwinds](https://w
10795

10896
By 2021, our traffic had risen to [over 2 petabytes](https://blog.jquery.com/2021/06/17/jquery-project-updates-addressing-temporary-cdn-issues/) per month.
10997

98+
In 2023, jQuery CDN [migrated](https://github.com/jquery/infrastructure-puppet/issues/30) from StackPath to Fastly.
99+
110100
### Latest statistics
111101

112-
Traffic profile from Highwinds StrikeTracker, as of January 2023 (HTTP+HTTPS combined):
102+
Traffic profile as of January 2023 ("code" and "releases" services combined):
113103

114104
* Overall: 2.2 petabytes bandwidth per month, in response to 57 billion web requests.
115105
* 16K-30K req/s (mean: 21K req/s)

test/Unit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public static function testHttp( $server, $path, array $reqHeaders, array $expec
129129
try {
130130
$resp = jq_req( $server . $path, $reqHeaders );
131131
foreach ( $expectHeaders as $key => $val ) {
132-
// Tolerate E-Tag weakning (which Highwinds CDN does)
132+
// Tolerate E-Tag weakning (which the CDN might)
133133
if ( $key == 'etag' ) {
134134
$actualVal = @$resp['headers'][$key];
135135
if ( $val !== $actualVal && $actualVal === "W/$val" ) {

0 commit comments

Comments
 (0)