256 Commits

Author SHA1 Message Date
Daniel Micay
7fcd8bf9a8 move error_log configuration to top level 2023-02-11 04:05:33 -05:00
Daniel Micay
30b5aafe32 add request time to log format 2023-02-10 08:28:02 -05:00
Daniel Micay
b903dd72ac switch to improved custom log format
This switches to a fully custom log format instead of using a variant of
the standard combined format since we don't use any tools requiring the
logs to be a standard format. This provides a cleaner format, allows us
to freely add new fields and gets rid of legacy/redundant fields.

The redundant timestamp already provided as the syslog timestamp is
dropped along with the legacy identd field always set to a dash.

This adds the connection serial number for identifying requests coming
from the same connection. TLS version is added as a replacement for our
previous addition of the URI scheme. This also adds the total request
length and total bytes sent to the client instead of only the body bytes
sent.
2023-02-10 08:04:25 -05:00
Daniel Micay
1bc589d45f drop HTTP/2 Push support since Chromium dropped it
This only improves performance for the initial page load by sending
resources that are almost always needed before the client receives the
preload headers and fetches them. It can degrade performance in some
edge cases such as clients with web fonts disabled or if the session
cookie is cleared without the cache being cleared. Clients can cancel
the push transfers once they start receiving them, but it's wasteful.

Safari and Firefox still support this feature but are likely to follow
the lead of Chromium and drop support for it. Few websites are going to
bother with it without Chromium support and usage is already dropping.
2023-02-10 03:56:20 -05:00
Daniel Micay
3b4c47b51b reduce client body / header timeouts to 15s 2023-02-09 18:42:15 -05:00
Daniel Micay
5260801290 reduce sendfile max chunk to 256k 2023-02-09 17:51:01 -05:00
Daniel Micay
76cc4ae336 avoid unnecessary ACME challenge redirects 2023-02-09 10:12:20 -05:00
Daniel Micay
763c17a058 unify HTTP redirect server blocks 2023-02-09 09:50:08 -05:00
Daniel Micay
3909151fc8 use default HTTP/2 input buffer size 2023-02-09 05:13:03 -05:00
Daniel Micay
3bb002fcd1 simplify nginx status path 2023-01-31 21:50:35 -05:00
Daniel Micay
6280211cc5 SSH commit signing will be used going forward 2023-01-05 02:04:19 -05:00
Daniel Micay
fb5b72e121 add empty traffic-advice configuration 2022-12-15 12:16:08 -05:00
Daniel Micay
d656b32161 update Permissions-Policy for web installer 2022-11-01 18:15:51 -04:00
smdyv
12ee1c8293 Update device image
This is a vectorized image of the Pixel 7 Pro, and saves 98 % of the
byte length of the previously used image.
2022-10-18 15:03:06 -04:00
Daniel Micay
f0a151b35e increase resolver timeout 2022-10-12 16:32:31 -04:00
Daniel Micay
7d0ad1a4de disable local-fonts in Permissions Policy 2022-10-11 11:15:10 -04:00
Daniel Micay
94f838f80d rename conn limit memory zone 2022-10-01 12:52:38 -04:00
Daniel Micay
ba88a05a53 use custom format for access log again 2022-09-27 10:23:23 -04:00
Daniel Micay
942959c75f enable caching for Matrix discovery API 2022-09-26 18:32:58 -04:00
Daniel Micay
0263524db7 reduce HTTP/2 chunk size to match TLS record size 2022-09-26 13:10:12 -04:00
Daniel Micay
c8ba885d32 use syslog (journald) for nginx access log 2022-09-25 14:15:18 -04:00
Daniel Micay
511be885bf reduce keepalive requests 2022-09-24 11:50:35 -04:00
Daniel Micay
e57765c650 reduce connection limit to 128 2022-09-24 11:24:41 -04:00
Daniel Micay
329bc8fd62 reduce HTTP/2 concurrent streams to 16 2022-09-24 11:19:18 -04:00
Daniel Micay
2ef894ca47 reduce max client header buffer size 2022-09-24 11:06:42 -04:00
Daniel Micay
0d728b6cfb no longer need location block for PDFs 2022-08-25 23:15:08 -04:00
Daniel Micay
cca5454c03 redirect legacy counterclaim document to history
The purpose of this document was to respond to false claims from James
Donaldson about myself and GrapheneOS. He changed his story about what
happened many times since this was posted. He didn't move forward with
his attempt at taking us to court and this was never used beyond being
posted on our site as a public response.

Nearly all of his supporters realized he was misleading them and left
for greener pastures. Most of them are now using GrapheneOS. We don't
need to refute outdated attacks on GrapheneOS from a person that's now
almost completely irrelevant, especially since he's now trying not to
draw attention to this since he came out looking so terrible. He quietly
misleads people about what happened with his latest historical revisions
and those are countered better by our newer pages summarizing it.
2022-08-25 23:15:08 -04:00
Daniel Micay
0403d17364 move nginx status API to socket 2022-08-25 23:15:08 -04:00
Daniel Micay
a057a16cc7 configuration style fixes 2022-06-27 23:57:35 -04:00
Daniel Micay
fda40376c7 raise expected nginx version 2022-06-10 19:39:06 -04:00
Daniel Micay
6541335b8c RFC 9239 obsoletes application/javascript 2022-05-12 16:59:25 -04:00
Daniel Micay
d2fc01a154 enable thread pool AIO support 2022-05-03 19:20:58 -04:00
Daniel Micay
e7efc21340 drop configuration for clearing legacy push cookie 2022-05-03 00:25:07 -04:00
Daniel Micay
271d04b876 add resolver setup to baseline configuration 2022-05-02 04:09:18 -04:00
Daniel Micay
15946d5ff9 disable traditional stateful TLS session cache
This is useless for TLSv1.3 since there's no longer any distinction in
the protocol based on whether the server is using stateless or stateful
session resumption. OpenSSL has a non-standard anti-replay mechanism for
0-RTT based on stateful session resumption but 0-RTT still ends up being
a downgrade for the TLS security properties. nginx disables that feature
since otherwise 0-RTT wouldn't work with the default stateless approach.

Since this cache is only used for TLSv1.2 when stateless resumption
isn't disabled and nearly all TLSv1.2 clients support tickets, it isn't
getting any significant use. It provides worse forward secrecy than
tickets because we implement ticket key rotation based on the expiry
time and sessions aren't actively purged from the stateful cache when
they expire. Cached session state varies in size and nginx ends up
writing errors to the log when clearing out a session fails to make room
for a new one due to it being larger. It's best to finally get rid of
this flawed approach to session resumption.

TLSv1.3 provides the option of forward secrecy for resumed sessions and
it's the only approach that's normally enabled so we don't need to worry
about this anymore once TLSv1.2 is disabled as long as we never enable
0-RTT which weakens forward secrecy and other security properties.
2022-04-30 22:53:28 -04:00
Daniel Micay
445e6db406 use IPv6 only for internal nginx status service 2022-04-17 13:13:45 -04:00
Daniel Micay
dff85fd680 add transparent Zcash donation address 2022-03-06 21:40:49 -05:00
Daniel Micay
83a3aaf65d extend redirect.js preload / push to /install/ 2022-02-19 10:06:06 -05:00
Daniel Micay
0786d86882 set up preload and push for redirect.js 2022-02-19 09:53:05 -05:00
Daniel Micay
e5e3577751 simplify configuration 2022-02-19 08:50:15 -05:00
Daniel Micay
6d5f192ccb avoid redirect for double slash in parameters 2022-02-01 21:24:51 -05:00
Daniel Micay
3a65315855 add grapheneos.dev domain 2022-01-27 19:21:55 -05:00
Daniel Micay
6b2f1e8220 workaround for odd CSP semantics in Chromium 97 2022-01-13 12:23:53 -05:00
Daniel Micay
53e792cffa improve approach to redundant slash redirection
Since merge_slashes gets rid of the redundant slashes, a no-op rewrite
will get rid of all of them at once instead of requiring one redirect to
get rid of each redundant slash.
2022-01-03 06:46:30 -05:00
Daniel Micay
1bfe29f2eb rename push cookie for clarity 2021-12-11 10:18:04 -05:00
Daniel Micay
a9a1a3987a add preload/push for main page phone image 2021-12-11 09:50:51 -05:00
Daniel Micay
f7f57175e4 set charset in Content-Type header for CSS too 2021-12-10 05:57:35 -05:00
Daniel Micay
7010b230c5 use http2_push instead of http2_push_preload
This avoids needing to conditionally add nopush to each preloaded
resource in the Link header. There's also no support for pushing
JavaScript modules via http2_push_preload since nginx doesn't have
support for rel=modulepreload.
2021-12-05 02:48:44 -05:00
Daniel Micay
2cc8f2f9a6 no need for case insensitive match for cookie name 2021-12-04 08:09:14 -05:00
Daniel Micay
fddfa68695 avoid sending unnecessary push cookie 2021-12-04 07:59:53 -05:00