Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development: Enable http3 for test servers #9232

Merged
merged 2 commits into from
Aug 21, 2024

Conversation

bensofficial
Copy link
Member

@bensofficial bensofficial commented Aug 19, 2024

Checklist

General

Motivation and Context

The proposed HTTP/3 protocol has several benefits compared to the communication with HTTP/2.

Description

Activate HTTP/3 for Nginx and add port 443 for UDP in the docker-compose.yml file.

See ls1intum/artemis-ansible-collection#54 for the config changes in Ansible.

Steps for Testing

  1. Deploy to a test server.
  2. Go to https://http3check.net/, enter the URL of the test server and check that HTTP/3 is active.

Testserver States

Note

These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Click on the badges to get to the test servers.







Review Progress

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Summary by CodeRabbit

  • New Features

    • Introduced support for QUIC and HTTP/3 protocols, enhancing secure connection handling for faster and more efficient web traffic.
    • Added headers to promote HTTP/3 support, improving client compatibility and performance.
  • Improvements

    • Optimized server configuration for handling modern web protocols, ensuring low latency and high throughput.

@bensofficial bensofficial added ready for review config-change Pull requests that change the config in a way that they require a deployment via Ansible. labels Aug 19, 2024
@bensofficial bensofficial self-assigned this Aug 19, 2024
@bensofficial bensofficial requested a review from a team as a code owner August 19, 2024 14:58
Copy link

coderabbitai bot commented Aug 19, 2024

Walkthrough

The updates to the Nginx configuration files significantly enhance the server's capabilities by integrating support for QUIC and HTTP/3 protocols. This allows for simultaneous handling of SSL, HTTP/2, and HTTP/3, while optimizing connection management through directives like reuseport, ssl_early_data, and quic_gso. Additionally, an alt-svc header is introduced to inform clients about HTTP/3 support, aiming to reduce latency and improve overall data transmission efficiency.

Changes

Files Change Summary
docker/nginx/artemis-nginx.conf Updated to support QUIC and HTTP/3 protocols, including directives for reuseport, http2, http3, quic_retry, ssl_early_data, and quic_gso.
docker/nginx/artemis-server.conf Added alt-svc header to advertise HTTP/3 support, enhancing compatibility and performance with modern web standards.

Recent review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE

Commits

Files that changed from the base of the PR and between 5509f79 and 10e09ca.

Files selected for processing (1)
  • docker/nginx/artemis-nginx.conf (2 hunks)
Additional comments not posted (4)
docker/nginx/artemis-nginx.conf (4)

28-28: LGTM! The quic_retry on directive is a beneficial addition.

This directive helps manage QUIC connection retries more effectively, contributing to more robust connections.


46-46: Verify network stack support for GSO.

The quic_gso on directive enables Generic Segmentation Offload for QUIC, which can optimize network performance. Ensure that the server's network stack supports GSO.


25-27: Ensure correct configuration for HTTP/2 and HTTP/3.

The http2 on, http3 on, and http3_hq on directives enable support for HTTP/2 and HTTP/3, which can enhance data transmission performance. Verify that the server is properly configured to handle these protocols.


21-24: Verify server compatibility with QUIC and HTTP/3.

The updated listen directives enable both SSL and QUIC traffic with reuseport, which can enhance connection handling efficiency. Ensure that the server and its dependencies are correctly configured to support HTTP/3 and QUIC.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

coderabbitai[bot]
coderabbitai bot previously approved these changes Aug 19, 2024
SimonEntholzer
SimonEntholzer previously approved these changes Aug 19, 2024
Copy link
Contributor

@SimonEntholzer SimonEntholzer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice change 👍 Verified QUIC usage with the provided website, and additionally checked with wireshark.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

docker/nginx/artemis-nginx.conf Show resolved Hide resolved
Copy link
Member

@Hialus Hialus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good 🚀

@@ -23,6 +23,8 @@ location / {
fastcgi_send_timeout 900s;
fastcgi_read_timeout 900s;
client_max_body_size 128M;
# used to advertise the availability of HTTP/3
add_header alt-svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could consider using persist=1 here to prevent these entries to be deleted when clearing the network config in the browser.

@krusche krusche changed the title Infrastructure: Enable HTTP/3 for testservers Development: Enable HTTP/3 for testservers Aug 21, 2024
@krusche krusche changed the title Development: Enable HTTP/3 for testservers Development: Enable http3 for test servers Aug 21, 2024
@krusche krusche merged commit 0d44cc1 into develop Aug 21, 2024
15 of 18 checks passed
@krusche krusche deleted the chore/infrastructure/enable-http3-for-testservers branch August 21, 2024 09:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
config-change Pull requests that change the config in a way that they require a deployment via Ansible. docker ready for review
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants